scrapboxの全てのpageを取得する
複数件づつ同時にfetchしたらもっと速くなるはず
やって見た
code:js
async function fetchPages(skip = 10) {
const titles = scrapbox.Project.pages.filter(page=>page.exists).map(page => page.titleLc);
const pages = [];
// skip件づつfetchする
for(let i =0;i < titles.length;i+=skip){
console.log(Start fetching ${i} - ${i + skip} pages.);
// 一気にAPIを叩いてページ情報を取得する
const promises = titles.slice(i, i+skip)
.map(async (title, i) => {
console.log([${i}] start fetching "/${scrapbox.Project.name}/${title}");
const res = await fetch(/api/pages/${scrapbox.Project.name}/${encodeURIComponent(title)});
console.log([${i}] finish fetching "/${scrapbox.Project.name}/${title}");
pages.push(await res.json());
});
await Promise.all(promises);
console.log(Finish fetching ${i} - ${i + skip} pages.);
}
// 全部取得できたら返却する
return pages;
}
code:js
fetchPages(100).then(pages=>console.log(pages));
結果
開始:01:48:11.538
終了:01:51:07.903
だいたい3分くらい
結構早かったtakker.icon
多分1000件づつにするともっと速くなるだろうけど、serverに負荷がかかりすぎるのでやめたほうがいい
01:59:50 やってみたら二週目でresponseの返答速度が異様に遅くなった
明らかに負荷がかかっていたので中断した
その後scrapboxを開いたらなんか遅かった
真似しないほうがいいですtakker.icon