#rocket #cache-control #caching #max-age


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

#26 in #caching

MIT license

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:

fn rocket() -> Rocket<Build> {
    let options = CCOptions::builder()
        .mount("/assets", CCFileServer::from("www/public/assets"))
        .mount("/js", CCFileServer::new("www/public/js", options))


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.


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


~837K SLoC