cloudflare worker: cache holds promises instead of buffers

This commit is contained in:
Brandon Liu
2022-07-20 13:07:02 +08:00
parent dc85fc60c2
commit e0402ded7f

View File

@@ -7,7 +7,7 @@ interface Env {
interface CacheEntry {
lastUsed: number;
buffer: DataView;
buffer: Promise<ArrayBuffer>;
}
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)];
}
}