IIS / AngularJS单页面应用程序 - 如何在应用程序中导航时阻止单个index.html的页面缓存

时间:2016-12-30 22:47:46

标签: html angularjs caching single-page-application

我需要让我的应用程序(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];

      }

1 个答案:

答案 0 :(得分:1)

我在PHP中的经验是,你无法控制浏览器是否决定缓存你的页面,不管你使用什么花哨的标题。

最好的方法是使用请求参数操作URL。

而不是http://example.com/mypage.html 使用:http://example.com/mypage.html?timestamp

在运行时动态生成时间戳,可以是随机数或任何动态唯一的字符串。

这也是阻止浏览器缓存CSS,JS,图像等的好方法。