rocket_cc_file_server

Crates.iorocket_cc_file_server
lib.rsrocket_cc_file_server
version0.1.0-beta.1
sourcesrc
created_at2022-07-02 17:12:11.446212
updated_at2022-09-07 12:31:27.862279
descriptionA custom FileServer providing better cache control for the Rocket web framework.
homepage
repositoryhttps://github.com/DerPizzaBoi/rocket_cc_file_server
max_upload_size
id617901
size57,543
Yannick W. (ywegel)

documentation

README

Rocket cache control FileServer

A custom implementation of the Rocket FileServer, that supports headers for cache control. CCFileServer can be used as a drop in replacement for Rocket's FileServer.

Set your own caching rules, while keeping rockets FileServer Options

It is this easy to use:

#[launch]
fn rocket() -> Rocket<Build> {
    let options = CCOptions::builder()
            .max_age(Some(300))
            .no_cache(Some(()));
  
    rocket::build()
        .mount("/assets", CCFileServer::from("www/public/assets"))
        .mount("/js", CCFileServer::new("www/public/js", options))
}

Usage

Mount the CCFileServer the same way you mount a normal rocket FileServer.

Additionally, you need to provide a CCOptions struct to configure the headers of the CCFileServer. Every field that has Some value will be set as a header.

TODO's

Right now it is just a prototype. There are still some things to do:

  • Port the rocket Options
  • Implement all caching options
    • max-age header
    • public/private, no_cache and no_store
    • Provide optional function to calculate expires date
    • Implement E-tags
  • Cleaner api
Commit count: 13

cargo fmt