3 function handleRequest(request, response) {
5 request.hasHeader("X-Moz") && request.getHeader("X-Moz") === "early hint";
6 let count = JSON.parse(getSharedState("earlyHintCount"));
12 setSharedState("earlyHintCount", JSON.stringify(count));
15 let qs = new URLSearchParams(request.queryString);
16 let asset = qs.get("as");
18 if (qs.get("cached") === "1") {
19 response.setHeader("Cache-Control", "max-age=604800", false);
21 response.setHeader("Cache-Control", "no-cache", false);
24 if (asset === "image") {
25 response.setHeader("Content-Type", "image/png", false);
26 // set to green/black horizontal stripes (71 bytes)
29 ? "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAADklEQVQIW2OU+i/FAAcADoABNV8XGBMAAAAASUVORK5CYII="
30 : "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAE0lEQVQIW2P4//+/N8MkBiAGsgA1bAe1SzDY8gAAAABJRU5ErkJggg=="
32 } else if (asset === "style") {
33 response.setHeader("Content-Type", "text/css", false);
34 // green background on hint response, purple response otherwise
35 content = `#square { background: ${hinted ? "#1aff1a" : "#4b0092"}`;
36 } else if (asset === "script") {
37 response.setHeader("Content-Type", "application/javascript", false);
38 // green background on hint response, purple response otherwise
39 content = `window.onload = function() {
40 document.getElementById('square').style.background = "${
41 hinted ? "#1aff1a" : "#4b0092"
44 } else if (asset === "fetch") {
45 response.setHeader("Content-Type", "text/plain", false);
46 content = hinted ? "hinted" : "normal";
49 response.write(content);