Fichiers statiques, compressés pour plus d'efficacité. Actuellement, nécessite Rust tous les soirs.
Dans cet exemple, nous utilisons une macro pour évaluer un chemin au moment de la compilation, par rapport au fichier source. En mode débogage, les fichiers seront chargés au moment de l'exécution. En mode release, les fichiers sont intégrés (et compressés de manière appropriée) dans le binaire compilé.
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 ;
Tous les champs (à l'exception contents
) sont désactivés par défaut, mais peuvent être activés par un indicateur de fonctionnalité correspondant.
Consultez la documentation pour connaître d'autres options, telles que la compression au moment de l'exécution.
Il existe une prise en charge expérimentale pour personnaliser la compression à l'aide d'un fichier de configuration. Si vous aviez une image nommée some_image.png
, vous pouvez placer ce qui suit dans un nouveau fichier nommé some_image.minicdn
pour ajuster le niveau de qualité WebP.
webp_quality = 75.0
Les options suivantes sont disponibles :
brotli_level
(1-11, par défaut 9)brotli_buffer_size
(octets, par défaut 4096)brotli_large_window_size
(par défaut 20)gzip_level
(1-9, par défaut 9)webp_quality
(0-100 ou "sans perte", 90 par défaut) Autorisé sous l'un ou l'autre des
à votre choix.
Sauf indication contraire explicite de votre part, toute contribution intentionnellement soumise pour inclusion dans le travail par vous, telle que définie dans la licence Apache-2.0, bénéficiera d'une double licence comme ci-dessus, sans termes ou conditions supplémentaires.