blob: e15d1b42c92aa48474beda74e88f9eb24ec2c3b8 [file] [log] [blame] [edit]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>HTTP Cache - Freshness</title>
<meta name="help" href="https://fetch.spec.whatwg.org/#request">
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="http-cache.js"></script>
</head>
<body>
<script>
var tests = [
// response directives
{
name: 'HTTP cache reuses a response with a future Expires.',
requests: [
{
response_headers: [
["Expires", http_date(30*24*60*60)]
]
},
{
expected_type: "cached",
}
]
},
{
name: 'HTTP cache does not reuse a response with a past Expires.',
requests: [
{
response_headers: [
["Expires", http_date(-30*24*60*60)]
]
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache does not reuse a response with a present Expires.',
requests: [
{
response_headers: [
["Expires", http_date(0)]
]
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache does not reuse a response with an invalid Expires.',
requests: [
{
response_headers: [
["Expires", "0"]
]
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache reuses a response with positive Cache-Control: max-age.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=3600"]
]
},
{
expected_type: "cached",
}
]
},
{
name: 'HTTP cache does not reuse a response with Cache-Control: max-age=0.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=0"]
]
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=3600"],
['Expires', http_date(-10000)]
]
},
{
expected_type: "cached",
}
]
},
{
name: 'HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=3600"],
['Expires', '0']
]
},
{
expected_type: "cached",
}
]
},
{
name: 'HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=0"],
['Expires', http_date(10000)]
]
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=1, s-maxage=3600"]
],
pause_after: true,
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=3600"],
["Age", "12000"]
],
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache does not store a response with Cache-Control: no-store.',
requests: [
{
response_headers: [
["Cache-Control", "no-store"]
]
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=10000, no-store"],
['Expires', http_date(10000)]
]
},
{
expected_type: "not_cached",
}
]
},
{
name: 'HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use.',
requests: [
{
response_headers: [
["Cache-Control", "no-cache"],
['ETag', 'abcd']
]
},
{
expected_type: "etag_validated",
}
]
},
{
name: 'HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires.',
requests: [
{
response_headers: [
["Cache-Control", "max-age=10000, no-cache"],
['Expires', http_date(10000)],
['ETag', 'abcd']
]
},
{
expected_type: "etag_validated",
}
]
},
];
run_tests(tests);
</script>
</body>
</html>