2025-01-04

Firefox のディスクキャッシュに負けた

どうしてこうなったんでしょう。不思議なめぐり合わせです。

異変に気づいた

きっかけは忘れてしまいましたが、Firefox の about:config で network.buffer.cache.count と network.buffer.cache.size をデフォルト値から増量してみたのです。

いつもと同じような使い方をしているのですが、設定を変更したあとなので Firefox の動きは注視していました。

すると「艦これ」の画面遷移で一呼吸の待ちが発生している感じで、ネットワーク通信も発生しているようなので不思議に思いました。

「艦これ」のデータなら Firefox のキャッシュにだいぶ保存されているはずだと思い、about:cache でキャッシュの状況を確認してみたところ、以前は 2GB の上限近くまで保管されていたキャッシュデータが 300MB しかありませんでした。

Storage in use がたったの 300MB?

 

調べてみた

これは network.buffer.cache.count か network.buffer.cache.size を変更した影響なのだと考え、片方ずつデフォルト値に戻してしばらく Firefox を使ってみたところ、どちらか片方だけを変更していても同じようにディスクキャッシュの使用率がガクンと落ちる事象が発生しました。途中まではディスクキャッシュの使用率がグングンと成長していくのですが、何かのタイミングでガクンと落ちるような動きです。

ということで、network.buffer.cache.count と network.buffer.cache.size の両方を元のデフォルト値に戻してみました。

が、状況は変わらずでした。

ひとまず「これは Firefox のとあるバージョンからこういう動き(個人的には不具合と思っている)になったんだな」という結論に落ち着きました。

 

 

さらに調べてみた

about:cache の画面には「List Cache Entries」というリンクが用意されていて、保持しているキャッシュデータの中身を確認できるようになっています。

これは「艦これ」の何かの画像ファイルのキャッシュ

ヘッダー情報の中に「Cache-Control」という項目があり、その中に「max-age」というパラメーターがキャッシュに保管しておいてよい期限となります。この例だと 2,592,000 秒なので約 30 日です。

「艦これ」の画像ファイルはこれくらい長い期間をキャッシュに残しておけるのですが、他のサイトのキャッシュデータは max-age がだいぶ短いことを発見しました。max-age=0 とかが多かった印象です。ほとんどのサイトが https であるため、セキュリティ面を考慮してキャッシュデータをなるべく残さないように設計しているのでしょうか。

 

 

本題とは関係ないのですが、このキャッシュヘッダーから「艦これ」は HTTP/1.1 でサーバーも Apache であることが判明しました。間に AWS の CloudFront が挟まっていてそっちのサーバー情報なのかもしれませんが、なんか一世代前な感じがしました。

「艦これ」は 2024 年の 12 月下旬に「サーバーの近代化」を実施したのですが、システム構成は替えずにサーバー能力だけを更改したのですかね。もしくは AWS に移行したのか、CloudFront を使うようになったのか・・・。

 

というわけで

Firefox のディスクキャッシュ使用率が突然に落ちてしまう事象を調べている内に、最近のキャッシュデータの有効期限はずいぶんと短くなっていることを発見しました。

それならばワタシも時代の変化に合わせてみようということで、今までは Firefox のディスクキャッシュを SSD 上に設定していましたが、これを tmpfs に変更しました。(Windows で言うところの RAMDISK)

Firefox のディスクキャッシュを off にしてメモリー上のキャッシュだけにすることもできるのですが、これだと Firefox を終了するとキャッシュが消えてしまうため tmpfs にしました。

ワタシは PC を再起動するのが週に 1 回程度なので、tmpfs だと Firefox の停止も制限なくできるし、1 週間くらいは(艦これの)キャッシュデータが残るのでそちらの方が良いかな、という判断です。