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