android.2.X系でjsがキャッシュする問題
と
iOSでjs、htmlがキャッシュする問題
でも書いたように下記の方法でキャッシュが完全にクリアーできると思ってました。
window.onunload = function() { }; window.onpageshow = function(event) { if (event.persisted) { location.reload(); } };がしかし、検証してみると、AndroidだけキャッシュされたHTMLが表示されてしまう。
ここでポイントは、JSの処理はキャッシュされていないのである。
どいうことかというと、ページで「進む」、「戻る」を押しても、
window.onpageshow = function(event) { if (event.persisted) { location.reload(); } };のevent.persistedがfalseを返してしまうのである。
これはどういうことかというと、
bfcache について覚えて帰ってもらいます。(転載)
に書いてあるように、どうやら「bfcache」が働いているらしく、HTMLのmetaタグで回避できないようなのである。
で、同エントリーに記載されているようにheaderのCache-Controlに「no-cache, no-store」を設定したところ、HTMLも最新の状態で表示することができた。
bfcache自体は大分前からある仕様のようです。
0 コメント:
コメントを投稿