[英]Determining a page is outdated on github pages
Github 页面在所有提供的内容上设置了非常激进的缓存标头( Cache-Control: max-age=86400
1 天,提前 1 个月Expires
)。
如果您更新页面并推送到 github,那么重新访问已经获得缓存副本的页面的人将不会在没有实际清理浏览器缓存的情况下获得新页面。
在页面中运行的脚本如何确定它已过时并强制更新?
步骤可能是:
window.location
for github.com/
$id$
。 那么你怎么知道你是什么版本呢?window.location.reload(true)
在 Safari/Chrome 中不起作用,例如...所以它的解决这些步骤; 当然可能有另一种方式?
为了更好地控制您网站的缓存,您可以使用 HTML5 缓存清单。 看:
您可以使用window.applicationCache.swapCache()
来更新网站的缓存版本,而无需手动重新加载页面。
这是来自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]
所以你的浏览器知道它是一个缓存清单,并且应该总是检查它是否有新版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.