我想确保我的应用程序始终使用最近部署的文件。我过去在其他框架中使用fingerprinting
我的资产和js
文件完成了此操作。我似乎找不到fingerprint
Angular资产和AMD
文件的良好解决方案。
如何在浏览器中缓存浏览器缓存或更新Angular
应用时更新?
答案 0 :(得分:0)
我有类似的问题,这就是我解决它的方法:
在index.html文件中,我添加了清单:
<html manifest="cache.manifest">
在<head>
部分包含更新缓存的脚本:
<script type="text/javascript" src="update_cache.js"></script>
在<body>
部分,我插入了onload函数:
<body onload="checkForUpdate()">
在cache.manifest中我已经放置了我想要缓存的所有文件。现在重要的是,只要每次更新“版本”注释,它都适用于我的情况(Apache)。也可以选择在名称末尾用“?ver = 001”命名文件,但不需要。仅更改#version 1.01会触发缓存更新事件。
CACHE MANIFEST
/# version 1.01 +(Remove the forward slash)
style.css
imgs/logo.png
/# all other files (Remove the forward slash)
仅在index.html中包含1.,2.和3.分是很重要的。否则
GET http://foo.bar/resource.ext net::ERR_FAILED
发生是因为每个“子”文件都在页面缓存时尝试缓存页面。
在update_cache.js
文件中我放了这段代码
function checkForUpdate()
{
if (window.applicationCache != undefined
&& window.applicationCache != null)
{
window.applicationCache.addEventListener('updateready'
, updateApplication);
}
}
function updateApplication(event)
{
if (window.applicationCache.status != 4) return;
window.applicationCache.removeEventListener('updateready'
, updateApplication);
window.applicationCache.swapCache();
window.location.reload();
}
现在您只需更改文件,在清单中您必须更新版本注释。现在访问index.html页面将更新缓存。
这也适用于角度应用程序。它适用于我的应用程序。