From e0402ded7ffd556fcfd73ae8a685e0fe9e264807 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Wed, 20 Jul 2022 13:07:02 +0800 Subject: [PATCH] cloudflare worker: cache holds promises instead of buffers --- serverless/cloudflare/worker.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/serverless/cloudflare/worker.ts b/serverless/cloudflare/worker.ts index 5eeb44a..3eb2b1f 100644 --- a/serverless/cloudflare/worker.ts +++ b/serverless/cloudflare/worker.ts @@ -7,7 +7,7 @@ interface Env { interface CacheEntry { lastUsed: number; - buffer: DataView; + buffer: Promise; } export class LRUCache { @@ -29,18 +29,17 @@ export class LRUCache { let val = this.entries.get(cacheKey); if (val) { val.lastUsed = this.counter++; - return [true, val.buffer]; + return [true, new DataView(await val.buffer)]; } let resp = await bucket.get(key, { range: { offset: offset, length: length }, }); - let a = await (resp as R2ObjectBody).arrayBuffer(); - let d = new DataView(a); + let a = (resp as R2ObjectBody).arrayBuffer(); this.entries.set(cacheKey, { lastUsed: this.counter++, - buffer: d, + buffer: a, }); if (this.entries.size > 128) { let minUsed = Infinity; @@ -54,7 +53,7 @@ export class LRUCache { if (minKey) this.entries.delete(minKey); } - return [false, d]; + return [false, new DataView(await a)]; } }