✅scrapbox.ioのcacheからtakker99/ScrapBubbleのデータを読み込む
採用
scrapbox.ioが保存してくれるやつを使わせていただく
以前もそうしていたのだが、cache読み込みが遅かったので、自前で用意したCacheに切り替えた
なので元に戻す
自前のcacheがなぜか更新されないバグがあるのも気になっている
これは別途修正するか
cache読み込みに1秒以上かかるときは、fetch読み込みに切り替える
code:こんなイメージ.ts
const cachePromise = findLatestApiCache(req)
const timer = sleep(1000).then(() => "timeout");
if (first === "timer") {
// fetchも走らせ始める
const networkPromise = fetch(req)
// 先にresolveしたほうから順に返す
// networkPromiseが先にresolveしたら、cachePromiseはyieldせずに捨てる
} else {
// cacheを返した後fetchする
yield await cachePromise1; yield await fetch(res);
}
設計
fetchが不要なときはbreakして処理を飛ばせる
code:ts
declare async function* cacheFirstFetch(req: Request):
for await (const type, res of cacheFirstFetch()) { const result = getPage.fromResponse(res);
// 処理
// networkからとる必要がなければ、ここで中断させる
if (type === "cache" && !isExpired(res)) break;
}
お蔵入り
firefoxでも秒で読み込まれて便利
実装するにはデータ構造を設計しないといけないうえ、ここまで高速化する必要もないので、今はお蔵入りする
2023-01-21