Merge pull request #1545 from RealOrangeOne/icon-client-cache

Client caching
This commit is contained in:
Daniel García 2021-03-28 16:03:16 +02:00 committed by GitHub
commit 01d8056c73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 7 deletions

View File

@ -51,7 +51,7 @@ fn icon(domain: String) -> Option<Cached<Content<Vec<u8>>>> {
return None; return None;
} }
get_icon(&domain).map(|icon| Cached::long(Content(ContentType::new("image", "x-icon"), icon))) get_icon(&domain).map(|icon| Cached::ttl(Content(ContentType::new("image", "x-icon"), icon), CONFIG.icon_cache_ttl()))
} }
/// Returns if the domain provided is valid or not. /// Returns if the domain provided is valid or not.

View File

@ -92,17 +92,21 @@ impl Fairing for CORS {
} }
} }
pub struct Cached<R>(R, &'static str); pub struct Cached<R>(R, String);
impl<R> Cached<R> { impl<R> Cached<R> {
pub const fn long(r: R) -> Cached<R> { pub fn long(r: R) -> Cached<R> {
// 7 days // 7 days
Self(r, "public, max-age=604800") Self::ttl(r, 604800)
} }
pub const fn short(r: R) -> Cached<R> { pub fn short(r: R) -> Cached<R> {
// 10 minutes // 10 minutes
Self(r, "public, max-age=600") Self(r, String::from("public, max-age=600"))
}
pub fn ttl(r: R, ttl: u64) -> Cached<R> {
Self(r, format!("public, immutable, max-age={}", ttl))
} }
} }