Github pages 提供されるすべてのコンテンツに非常に積極的なキャッシュヘッダー(_Cache-Control: max-age=86400
_ 1日、Expires
1か月先)を設定します。
ページを更新してgithubにプッシュすると、すでにキャッシュされたコピーを取得しているページに再度アクセスしたユーザーは、ブラウザのキャッシュを実際にクリーンアップしないと新しいページを取得できません。
ページで実行されているスクリプトは、どのようにしてページが古くなっていると判断し、強制的に更新することができますか?
手順は次のとおりです。
window.location
_ for _github.com/
_を解析します$id$
_。では、自分がどのバージョンであるかをどうやって知るのでしょうか?window.location.reload(true)
はSafari/Chromeでは機能しません。したがって、その解決-これらのステップ。もちろん、別の方法があるかもしれませんか?
Webサイトのキャッシュをより適切に制御するには、HTML5キャッシュマニフェストを使用できます。見る:
window.applicationCache.swapCache()
を使用すると、ページを手動で再読み込みしなくても、キャッシュされたバージョンのWebサイトを更新できます。
これは HTML5 Rocks のコード例で、ユーザーをサイトの最新バージョンに更新する方法を説明しています。
// Check if a new cache is available on page load.
window.addEventListener('load', function(e) {
window.applicationCache.addEventListener('updateready', function(e) {
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
// Browser downloaded a new app cache.
// Swap it in and reload the page to get the new hotness.
window.applicationCache.swapCache();
if (confirm('A new version of this site is available. Load it?')) {
window.location.reload();
}
} else {
// Manifest didn't changed. Nothing new to server.
}
}, false);
}, false);
混乱を避けるために、GitHubがcache.manifestファイルに正しいHTTPヘッダーを設定することを追加します。
Content-Type: text/cache-manifest
Cache-Control: max-age=0
Expires: [CURRENT TIME]
そのため、ブラウザはそれがキャッシュマニフェストであり、常に新しいバージョンをチェックする必要があることを認識しています。