IIS / AngularJS单页应用程序-在应用程序中导航时如何防止单个index.html的页面缓存
Posted
技术标签:
【中文标题】IIS / AngularJS单页应用程序-在应用程序中导航时如何防止单个index.html的页面缓存【英文标题】:IIS / AngularJS Single Page Application - How do I prevent page caching of a single index.html when navigating in app 【发布时间】:2017-05-15 04:37:03 【问题描述】:我需要让我的应用程序 (SPA) 不跨页面导航操作缓存 index.html。
我的应用有缓存破坏,但它仅在我更新(重新加载)index.html 时才有效。
如何在我的应用中导航时强制应用不缓存 index.html,并在每次页面导航点击或操作时重新加载 index.html?
这是我现有的 sn-p 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 中添加以下脚本标记会强制页面在每次 url 更改时重新加载。
window.onhashchange = function()
var parts = window.location.href.split("#");
window.location.href = window.location.protocol + "//" + window.location.host + "?t=" + (new Date()).getTime() + "#" + parts[1];
【问题讨论】:
如果您在每次导航更改时都强制重新加载页面,那么您不妨只使用常规 Web 应用程序而不是使用 SPA。 【参考方案1】:我在 php 中的经验是,无论您使用什么花哨的标头,您都无法控制浏览器是否决定缓存您的页面。
最好的方法是使用请求参数来操作 URL。
而不是http://example.com/mypage.html 使用:http://example.com/mypage.html?timestamp
时间戳在运行时动态生成,可以是随机数或您希望的任何动态唯一字符串。
这也是防止浏览器缓存CSS、JS、图片等的好办法
【讨论】:
感谢您的快速回复,该应用程序完全是我的角度代码,因此我认为我无法在请求中注入时间戳。我也在使用路由来访问页面。 @Vahe 没问题。如果你真的需要,Angular 或任何其他 JS 都可以使用 window.redirect。另一种选择是动态加载资源(相同的技巧),而不是担心将整个页面作为新请求加载。祝你在编码丛林中好运!以上是关于IIS / AngularJS单页应用程序-在应用程序中导航时如何防止单个index.html的页面缓存的主要内容,如果未能解决你的问题,请参考以下文章
[Angularjs]asp.net mvc+angularjs+web api单页应用
如何为单页 AngularJS 应用程序实现基本的 Spring 安全性(会话管理)
使用 AngularJS 和 Spring Security 的单页应用程序中需要 AntMatchers