Skip to content

Instantly share code, notes, and snippets.

@ihsangan
Created March 4, 2022 02:22
Show Gist options
  • Save ihsangan/e215ad7663c2aeee5e4380eb1e4d693f to your computer and use it in GitHub Desktop.
Save ihsangan/e215ad7663c2aeee5e4380eb1e4d693f to your computer and use it in GitHub Desktop.
How i serve https://www.isan.eu.org/ using Cloudflare Workers and GitHub Pages
async function handleRequest(request) {
let ms = Date.now()
let add = new Date(ms + 604800000)
const url = new URL(request.url)
url.hostname = "ihsangan.github.io"
let req = new Request(url, request)
let response = await fetch(req, {
cf: {
minify: { javascript: true, css: true, html: true },
cacheTtl: 86400,
cacheEverything: true,
apps: false,
scrapeShield: false,
},
})
response = new Response(response.body, response)
if (response.status === 404) {
let nf = await fetch("https://cdn.jsdelivr.net/gh/ihsangan/ihsangan.github.io@ext/workers-404.html")
nf = new Response(nf.body, { status: 404, headers: { "Content-Type": "text/html; charset=utf-8", "Retry-After": "0" }})
return nf
} else {
response.headers.delete("Via")
response.headers.delete("access-control-allow-origin")
response.headers.delete("etag")
response.headers.delete("permissions-policy")
response.headers.delete("date")
response.headers.delete("strict-transport-security")
response.headers.delete("x-cache")
response.headers.delete("x-cache-hits")
response.headers.delete("x-served-by")
response.headers.delete("x-proxy-cache")
response.headers.delete("x-github-request-id")
response.headers.delete("x-fastly-request-id")
response.headers.delete("x-timer")
response.headers.set("Expires", add.toUTCString())
response.headers.set("Cache-Control", "public, max-age=86400")
response.headers.set("X-Powered-By", "GitHub Pages, Cloudflare Workers")
response.headers.set("X-Timestamp", ms)
const end = Date.now()
const time = end - ms
response.headers.set("X-Response-Time", time)
return response
}
}
addEventListener("fetch", event => {
return event.respondWith(handleRequest(event.request))
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment