Source code

Revision control

Copy as Markdown

Other Tools

function handleRequest(request, response) {
if (request.queryString == "reset") {
// Reset the internal state.
setState("redirected", "");
response.setStatusLine(request.httpVersion, 200, "OK");
response.setHeader("Content-Type", "text/plain", false);
const body = "reset";
response.bodyOutputStream.write(body, body.length);
} else if (
request.queryString == "redirect-cache" ||
request.queryString == "redirect-nocache"
) {
// Redirect to different CSS between the first and the second requests.
response.setStatusLine(request.httpVersion, 301, "Moved Permanently");
if (getState("redirected")) {
response.setHeader(
"Location",
"file_resource_cache_server.sjs?blue",
false
);
} else {
response.setHeader(
"Location",
"file_resource_cache_server.sjs?red",
false
);
}
if (request.queryString == "redirect-nocache") {
response.setHeader("Cache-Control", "no-cache", false);
} else {
response.setHeader("Cache-Control", "max-age=10000", false);
}
setState("redirected", "1");
} else if (request.queryString == "blue") {
response.setStatusLine(request.httpVersion, 200, "OK");
response.setHeader("Cache-Control", "max-age=10000", false);
response.setHeader("Content-Type", "text/css", false);
const body = `body { color: blue; }`;
response.bodyOutputStream.write(body, body.length);
} else {
response.setStatusLine(request.httpVersion, 200, "OK");
response.setHeader("Cache-Control", "max-age=10000", false);
response.setHeader("Content-Type", "text/css", false);
const body = `body { color: red; }`;
response.bodyOutputStream.write(body, body.length);
}
}