# minicdn Static files, compressed for efficiency. Currently, requires Rust nightly. ## Example In this example, we use a macro to evaluate a path at compile time, relative to the source file. In debug mode, the files will be loaded at runtime. In release mode, the files are embedded (and appropriately compressed) into the compiled binary. ```rust let files: MiniCdn = release_include_mini_cdn!("./path/to/public/files/"); let html = files.get("index.html").unwrap(); // 32 byte digest of the file. let _ = html.etag; // Last modified time as string, in UNIX seconds. let _ = html.last_modified; // MIME type string. let _ = html.mime; // Raw HTML bytes. let _ = html.contents; // HTML compressed with Brotli, if it is more efficient. let _ = html.contents_brotli; // HTML compressed with GZIP, if it is more efficient. let _ = html.contents_gzip; let image = files.get("images/foo.png").unwrap(); // Raw PNG bytes. let _ = image.contents; // WebP bytes (if WebP is more efficient). let _ = image.contents_webp; ``` All of the fields (excepts `contents`) are disabled by default, but can be switched on by a corresponding feature flag. Check the documentation for other options, such as doing the compression at runtime. ## Config file There is experimental support for customizing compression using a config file. If you had an image named `some_image.png`, you could place the following in a new file named `some_image.minicdn` to adjust the WebP quality level. ```toml webp_quality = 75.0 ``` The following options are available: - `brotli_level` (1-11, default 9) - `brotli_buffer_size` (bytes, default 4096) - `brotli_large_window_size` (default 20) - `gzip_level` (1-9, default 9) - `webp_quality` (0-100 or "lossless", default 90) ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.