mirror of
https://github.com/protomaps/PMTiles.git
synced 2026-02-04 10:51:07 +00:00
cloudflare worker: cache holds promises instead of buffers
This commit is contained in:
@@ -7,7 +7,7 @@ interface Env {
|
|||||||
|
|
||||||
interface CacheEntry {
|
interface CacheEntry {
|
||||||
lastUsed: number;
|
lastUsed: number;
|
||||||
buffer: DataView;
|
buffer: Promise<ArrayBuffer>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LRUCache {
|
export class LRUCache {
|
||||||
@@ -29,18 +29,17 @@ export class LRUCache {
|
|||||||
let val = this.entries.get(cacheKey);
|
let val = this.entries.get(cacheKey);
|
||||||
if (val) {
|
if (val) {
|
||||||
val.lastUsed = this.counter++;
|
val.lastUsed = this.counter++;
|
||||||
return [true, val.buffer];
|
return [true, new DataView(await val.buffer)];
|
||||||
}
|
}
|
||||||
|
|
||||||
let resp = await bucket.get(key, {
|
let resp = await bucket.get(key, {
|
||||||
range: { offset: offset, length: length },
|
range: { offset: offset, length: length },
|
||||||
});
|
});
|
||||||
let a = await (resp as R2ObjectBody).arrayBuffer();
|
let a = (resp as R2ObjectBody).arrayBuffer();
|
||||||
let d = new DataView(a);
|
|
||||||
|
|
||||||
this.entries.set(cacheKey, {
|
this.entries.set(cacheKey, {
|
||||||
lastUsed: this.counter++,
|
lastUsed: this.counter++,
|
||||||
buffer: d,
|
buffer: a,
|
||||||
});
|
});
|
||||||
if (this.entries.size > 128) {
|
if (this.entries.size > 128) {
|
||||||
let minUsed = Infinity;
|
let minUsed = Infinity;
|
||||||
@@ -54,7 +53,7 @@ export class LRUCache {
|
|||||||
if (minKey) this.entries.delete(minKey);
|
if (minKey) this.entries.delete(minKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [false, d];
|
return [false, new DataView(await a)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user