浏览器缓存清除Angular更新?

时间:2014-06-28 15:53:42

标签: angularjs caching browser-cache

我想确保我的应用程序始终使用最近部署的文件。我过去在其他框架中使用fingerprinting我的资产和js文件完成了此操作。我似乎找不到fingerprint Angular资产和AMD文件的良好解决方案。

如何在浏览器中缓存浏览器缓存或更新Angular应用时更新?

1 个答案:

答案 0 :(得分:0)

我有类似的问题,这就是我解决它的方法:

  1. 在index.html文件中,我添加了清单:

    <html manifest="cache.manifest">
    
  2. <head>部分包含更新缓存的脚本:

    <script type="text/javascript" src="update_cache.js"></script>
    
  3. <body>部分,我插入了onload函数:

    <body onload="checkForUpdate()">
    
  4. 在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)
    
  5. 仅在index.html中包含1.,2.和3.分是很重要的。否则

    GET http://foo.bar/resource.ext net::ERR_FAILED
    
    发生

    是因为每个“子”文件都在页面缓存时尝试缓存页面。

    1. 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页面将更新缓存。

    2. 这也适用于角度应用程序。它适用于我的应用程序。