我需要让我的应用程序(SPA)不跨页面导航操作缓存index.html。
我的应用程序有缓存清除,但它只在我更新(重新加载)index.html时才有效。
如何在我的应用内导航时强制应用程序不缓存index.html,并在每个页面导航点击或操作时重新加载index.html?
以下是我现有的代码段index.html代码:
<!DOCTYPE html>
<html lang="en" manifest="sw.appcache">
<head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
sw.appcache文件内容
CACHE MANIFEST
NETWORK:
*
修改
我的index.html强制页面中的脚本标记添加以下内容,以便每次更改网址时重新加载。
window.onhashchange = function() {
var parts = window.location.href.split("#");
window.location.href = window.location.protocol + "//" + window.location.host + "?t=" + (new Date()).getTime() + "#" + parts[1];
}
答案 0 :(得分:1)
我在PHP中的经验是,你无法控制浏览器是否决定缓存你的页面,不管你使用什么花哨的标题。
最好的方法是使用请求参数操作URL。
而不是http://example.com/mypage.html 使用:http://example.com/mypage.html?timestamp
在运行时动态生成时间戳,可以是随机数或任何动态唯一的字符串。
这也是阻止浏览器缓存CSS,JS,图像等的好方法。