node_modulesのキャッシュが機能する条件
npm install の時間を短縮したいときの話
キャッシュによるタイムロス < ネットワーク待ち時間であること
当たり前だが、インターネットからダウンロードするほうが速いならキャッシュする意味はない
ネットワーク利用に従量課金がある場合は事情が変わるが
キャッシュによるタイムロスの内訳
node_modulesの圧縮
数GBのディレクトリの圧縮・解凍は時間がかかる
CPU性能が低いと顕著に遅い(CI環境でよくある)
node_modulesの解凍
圧縮と同じく
保存したキャッシュが使用されること
これも当たり前だが、たとえネットワーク待ち時間より短くなるとして、キャッシュが実際に使えるかどうか
基本的に node_modules のキャッシュのキーにはLockfileのchecksumなどが使われる
Renovateやdependabotを使うようなプロジェクトでLockfileが変わらない期間はどれほどか
3日保てば長い方なのでは?
ヒット率が低く爆速になるわけでもないのに事故るとリスクのでかいキャッシュになっていないか
ネットワーク待ち時間の差分と釣り合っているかよく考えてキャッシュしよう
キャッシュは事故リスクと引き換えに速度を手に入れる行為
実効速度
例えばの話 キャッシュヒット率50%でキャッシュなし12分キャッシュあり8分なら実質10分
元が9分だったらキャッシュ作る時間がないほうがトータルでは速い
node_modulesではなくパッケージマネージャが持つグローバルキャッシュだけでも割と効果がある