cache response for an hour
This commit is contained in:
16
src/index.ts
16
src/index.ts
@@ -8,7 +8,7 @@ type Env = {
|
||||
export { RulesCache };
|
||||
|
||||
export default {
|
||||
async fetch(request, env, _ctx): Promise<Response> {
|
||||
async fetch(request, env, ctx): Promise<Response> {
|
||||
const url = new URL(request.url);
|
||||
const targetUrl = url.searchParams.get("url");
|
||||
|
||||
@@ -16,17 +16,29 @@ export default {
|
||||
return new Response("Missing url parameter", { status: 400 });
|
||||
}
|
||||
|
||||
const cache = caches.default;
|
||||
const cacheKey = new Request(`${url.origin}/cache/${encodeURIComponent(targetUrl)}`);
|
||||
|
||||
let response = await cache.match(cacheKey);
|
||||
if (response) {
|
||||
return response;
|
||||
}
|
||||
|
||||
try {
|
||||
const rulesStub = env.RULES_CACHE.getByName("rules");
|
||||
const rules = await rulesStub.getRules();
|
||||
|
||||
const cleanedUrl = await cleanUrl(targetUrl, rules);
|
||||
return new Response(cleanedUrl, {
|
||||
response = new Response(cleanedUrl, {
|
||||
headers: {
|
||||
"Content-Type": "text/plain",
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
"Cache-Control": "public, max-age=3600",
|
||||
},
|
||||
});
|
||||
|
||||
ctx.waitUntil(cache.put(cacheKey, response.clone()));
|
||||
return response;
|
||||
} catch (error) {
|
||||
return new Response(`Error processing URL: ${error instanceof Error ? error.message : "Unknown error"}`, {
|
||||
status: 500,
|
||||
|
Reference in New Issue
Block a user