#rocket #cache #rocket-web #cache-control #max-age

rocket_cc_file_server

A custom FileServer providing better cache control for the Rocket web framework

2 releases

0.1.0-beta.1 Sep 7, 2022
0.1.0-alpha.1 Jul 2, 2022

#1611 in Web programming

MIT license

17KB
189 lines

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

Dependencies

~15–50MB
~799K SLoC