From 7a56b66c6982441f957c1873a475ebcb4df98542 Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Sat, 12 Apr 2025 17:13:27 -0400 Subject: feat: cache things from /assets --- src/main.rs | 3 +++ src/middleware.rs | 1 + src/middleware/cache_control.rs | 15 +++++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 src/middleware.rs create mode 100644 src/middleware/cache_control.rs diff --git a/src/main.rs b/src/main.rs index 252588d..372915b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,12 +7,14 @@ use tutors::fs_tutor_repo::FsTutorRepo; use std::{sync::Arc, env}; use tower_http::services::ServeDir; use posts::fs_post_repo::FsPostRepo; +use middleware::cache_control::cache_static; mod helpers; mod posts; mod tutors; mod views; mod handlers; +mod middleware; #[tokio::main] async fn main() { @@ -46,6 +48,7 @@ async fn main() { .nest_service("/assets", ServeDir::new(assets_dir)) .nest_service("/team", ServeDir::new(tutor_dir)) .fallback_service(ServeDir::new("static")) + .layer(axum::middleware::from_fn(cache_static)) .layer( TraceLayer::new_for_http() .make_span_with(trace::DefaultMakeSpan::new() diff --git a/src/middleware.rs b/src/middleware.rs new file mode 100644 index 0000000..a7d3c17 --- /dev/null +++ b/src/middleware.rs @@ -0,0 +1 @@ +pub mod cache_control; diff --git a/src/middleware/cache_control.rs b/src/middleware/cache_control.rs new file mode 100644 index 0000000..30f31ca --- /dev/null +++ b/src/middleware/cache_control.rs @@ -0,0 +1,15 @@ +use axum::extract::Request; +use axum::http::header::{HeaderValue, CACHE_CONTROL}; +use axum::middleware::Next; +use axum::response::Response; + +pub async fn cache_static(mut request: Request, next: Next) -> Response { + let was_static = request.uri().path().starts_with("/assets"); + let mut response = next.run(request).await; + + if was_static { + response.headers_mut().insert(CACHE_CONTROL, HeaderValue::from_static("max-age=3600")); + } + + response +} -- cgit v1.2.3