Skip to content

Commit b194f43

Browse files
committed
remove latest-version caching logic in favor for new full page caching
1 parent 0410d27 commit b194f43

File tree

2 files changed

+19
-130
lines changed

2 files changed

+19
-130
lines changed

src/config.rs

-14
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,6 @@ pub struct Config {
6262
// generate just that directive. Values are in seconds.
6363
pub(crate) cache_control_stale_while_revalidate: Option<u32>,
6464
pub(crate) cache_control_max_age: Option<u32>,
65-
pub(crate) cache_control_s_max_age: Option<u32>,
66-
67-
// Cache-Control header, for /latest/ URLs.
68-
// Same conditions as above apply.
69-
pub(crate) cache_control_stale_while_revalidate_latest: Option<u32>,
70-
pub(crate) cache_control_max_age_latest: Option<u32>,
71-
pub(crate) cache_control_s_max_age_latest: Option<u32>,
7265

7366
pub(crate) cdn_backend: CdnKind,
7467

@@ -153,13 +146,6 @@ impl Config {
153146
"CACHE_CONTROL_STALE_WHILE_REVALIDATE",
154147
)?,
155148
cache_control_max_age: maybe_env("CACHE_CONTROL_MAX_AGE")?,
156-
cache_control_s_max_age: maybe_env("CACHE_CONTROL_S_MAX_AGE")?,
157-
158-
cache_control_stale_while_revalidate_latest: maybe_env(
159-
"CACHE_CONTROL_STALE_WHILE_REVALIDATE_LATEST",
160-
)?,
161-
cache_control_max_age_latest: maybe_env("CACHE_CONTROL_MAX_AGE_LATEST")?,
162-
cache_control_s_max_age_latest: maybe_env("CACHE_CONTROL_S_MAX_AGE_LATEST")?,
163149

164150
cdn_backend: env("DOCSRS_CDN_BACKEND", CdnKind::Dummy)?,
165151

src/web/rustdoc.rs

+19-116
Original file line numberDiff line numberDiff line change
@@ -42,35 +42,6 @@ static DOC_RUST_LANG_ORG_REDIRECTS: Lazy<HashMap<&str, &str>> = Lazy::new(|| {
4242
])
4343
});
4444

45-
fn generate_cache_directives_for(
46-
max_age: Option<u32>,
47-
s_max_age: Option<u32>,
48-
stale_while_revalidate: Option<u32>,
49-
) -> Option<CacheControl> {
50-
let mut directives = vec![];
51-
52-
if let Some(seconds) = stale_while_revalidate {
53-
directives.push(CacheDirective::Extension(
54-
"stale-while-revalidate".to_string(),
55-
Some(format!("{}", seconds)),
56-
));
57-
}
58-
59-
if let Some(seconds) = max_age {
60-
directives.push(CacheDirective::MaxAge(seconds));
61-
}
62-
63-
if let Some(seconds) = s_max_age {
64-
directives.push(CacheDirective::SMaxAge(seconds));
65-
}
66-
67-
if !directives.is_empty() {
68-
Some(CacheControl(directives))
69-
} else {
70-
None
71-
}
72-
}
73-
7445
/// Handler called for `/:crate` and `/:crate/:version` URLs. Automatically redirects to the docs
7546
/// or crate details page based on whether the given crate version was successfully built.
7647
pub fn rustdoc_redirector_handler(req: &mut Request) -> IronResult<Response> {
@@ -290,21 +261,26 @@ impl RustdocPage {
290261
let mut response = Response::with((Status::Ok, html));
291262
response.headers.set(ContentType::html());
292263

293-
let cache_control = if is_latest_url {
294-
generate_cache_directives_for(
295-
Some(config.cache_control_max_age_latest.unwrap_or(0)),
296-
config.cache_control_s_max_age_latest,
297-
config.cache_control_stale_while_revalidate_latest,
298-
)
264+
if is_latest_url {
265+
response
266+
.headers
267+
.set(CacheControl(vec![CacheDirective::MaxAge(0)]));
299268
} else {
300-
generate_cache_directives_for(
301-
config.cache_control_max_age,
302-
config.cache_control_s_max_age,
303-
config.cache_control_stale_while_revalidate,
304-
)
305-
};
306-
if let Some(cache_control) = cache_control {
307-
response.headers.set(cache_control);
269+
let mut directives = vec![];
270+
if let Some(seconds) = config.cache_control_stale_while_revalidate {
271+
directives.push(CacheDirective::Extension(
272+
"stale-while-revalidate".to_string(),
273+
Some(format!("{}", seconds)),
274+
));
275+
}
276+
277+
if let Some(seconds) = config.cache_control_max_age {
278+
directives.push(CacheDirective::MaxAge(seconds));
279+
}
280+
281+
if !directives.is_empty() {
282+
response.headers.set(CacheControl(directives));
283+
}
308284
}
309285
Ok(response)
310286
}
@@ -912,39 +888,6 @@ mod test {
912888
})
913889
}
914890

915-
#[test]
916-
fn cache_headers_only_latest() {
917-
wrapper(|env| {
918-
env.override_config(|config| {
919-
config.cache_control_max_age_latest = Some(600);
920-
config.cache_control_stale_while_revalidate_latest = Some(2592000);
921-
});
922-
923-
env.fake_release()
924-
.name("dummy")
925-
.version("0.1.0")
926-
.archive_storage(true)
927-
.rustdoc_file("dummy/index.html")
928-
.create()?;
929-
930-
let web = env.frontend();
931-
932-
{
933-
let resp = web.get("/dummy/latest/dummy/").send()?;
934-
assert_eq!(
935-
resp.headers().get("Cache-Control").unwrap(),
936-
&"stale-while-revalidate=2592000, max-age=600"
937-
);
938-
}
939-
940-
{
941-
let resp = web.get("/dummy/0.1.0/dummy/").send()?;
942-
assert!(resp.headers().get("Cache-Control").is_none());
943-
}
944-
Ok(())
945-
})
946-
}
947-
948891
#[test]
949892
fn cache_headers_on_version() {
950893
wrapper(|env| {
@@ -978,46 +921,6 @@ mod test {
978921
})
979922
}
980923

981-
#[test]
982-
fn cache_headers_latest_and_version() {
983-
wrapper(|env| {
984-
env.override_config(|config| {
985-
config.cache_control_max_age = Some(666);
986-
config.cache_control_s_max_age = Some(777);
987-
config.cache_control_max_age_latest = Some(999);
988-
config.cache_control_s_max_age_latest = Some(888);
989-
config.cache_control_stale_while_revalidate = Some(2222222);
990-
config.cache_control_stale_while_revalidate_latest = Some(3333333);
991-
});
992-
993-
env.fake_release()
994-
.name("dummy")
995-
.version("0.1.0")
996-
.archive_storage(true)
997-
.rustdoc_file("dummy/index.html")
998-
.create()?;
999-
1000-
let web = env.frontend();
1001-
1002-
{
1003-
let resp = web.get("/dummy/latest/dummy/").send()?;
1004-
assert_eq!(
1005-
resp.headers().get("Cache-Control").unwrap(),
1006-
&"stale-while-revalidate=3333333, max-age=999, s-maxage=888"
1007-
);
1008-
}
1009-
1010-
{
1011-
let resp = web.get("/dummy/0.1.0/dummy/").send()?;
1012-
assert_eq!(
1013-
resp.headers().get("Cache-Control").unwrap(),
1014-
&"stale-while-revalidate=2222222, max-age=666, s-maxage=777"
1015-
);
1016-
}
1017-
Ok(())
1018-
})
1019-
}
1020-
1021924
#[test_case(true)]
1022925
#[test_case(false)]
1023926
fn go_to_latest_version(archive_storage: bool) {

0 commit comments

Comments
 (0)