アプリケーションキャッシュでキャッシュしてくれない時
2013/10/28 | html5
html5の機能の一つであるアプリケーションキャッシュ。htmlファイルやcss等を専用のストレージに格納してくれる機能だ。
仕事でアプリケーションキャッシュを使うことになった。最初のうちは問題なく動作確認できていた記憶があったが、つい最近使ってみたけど何故かキャッシュしてくれない事象が発生。「拡張子を昔みたいにmanifestに戻してみたり」「htaccessを配置してmimeタイプを設定してみたり」したけど全然ダメ。理由がわからない。
そこで初心に立ち返って、最小限のテストコードで試行錯誤してみたら原因がわかった。
どうやらアプリケーションキャッシュは、マニフェストファイルに書かれたキャッシュすべきファイルを取得できなかった時(not foundとか)にキャッシュをやめるんだか破棄してしまうんだか、そんな仕様になっているようだ。問題のあるファイルをスキップして残りはキャッシュしてくれる、ということではないらしい。ChromeとFirefoxで確認した。
もちろんキャッシュしたいのだから「正しく指定する」ということが大前提ではあるのだが。中途半端に動作すると原因の究明が大変だからそういう仕様なのかな、とも思ったりした。