From 59360759cff59f6d4a26526a255f6d61540c3dc2 Mon Sep 17 00:00:00 2001 From: Sebastian Jeltsch Date: Thu, 23 Oct 2025 13:36:35 +0200 Subject: [PATCH] Disable caching for static `index.html` assets. --- crates/assets/src/assets.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/crates/assets/src/assets.rs b/crates/assets/src/assets.rs index 9eaa167a..1bc4f438 100644 --- a/crates/assets/src/assets.rs +++ b/crates/assets/src/assets.rs @@ -86,10 +86,10 @@ impl Future for ServeFuture { )); } - let path: &str = match self.request.uri().path().trim_start_matches("/") { + let (index, path): (bool, &str) = match self.request.uri().path().trim_start_matches("/") { // If path is only "/" get index file. - x if x.is_empty() => self.state.index_file.as_deref().unwrap_or(x), - x => x, + x if x.is_empty() => (true, self.state.index_file.as_deref().unwrap_or(x)), + x => (false, x), }; let Some(file) = E::get(path).or_else(|| { @@ -102,11 +102,15 @@ impl Future for ServeFuture { return Poll::Ready(Ok(Self::not_found())); }; - let response_builder = Response::builder() - .header(http::header::CACHE_CONTROL, "public") - .header(http::header::CACHE_CONTROL, "max-age=604800") - .header(http::header::CACHE_CONTROL, "immutable") - .header(http::header::CONTENT_TYPE, file.metadata.mimetype()); + let response_builder = if index { + Response::builder().header(http::header::CONTENT_TYPE, file.metadata.mimetype()) + } else { + Response::builder() + .header(http::header::CACHE_CONTROL, "public") + .header(http::header::CACHE_CONTROL, "max-age=604800") + .header(http::header::CACHE_CONTROL, "immutable") + .header(http::header::CONTENT_TYPE, file.metadata.mimetype()) + }; return Poll::Ready(Ok( response_builder