如何使用angularjs和nodejs处理浏览器缓存?

时间:2013-03-30 18:07:49

标签: node.js angularjs

目前我正在使用angularjs和nodejs

我的服务器中有一些角度模板,当角度请求模板时,模板将在浏览器中呈现,并且如果我正在更改模板的布局并更新模板,它将被浏览器缓存。在服务器中,现在当用户被重定向到同一模板时,浏览器从旧浏览器缓存中呈现模板。

如何克服这个问题?

注意:我不想清除整个浏览器缓存,因为它会影响我的整体网站性能。

1 个答案:

答案 0 :(得分:2)

实践

在某些页面上您没有缓存,您可以将?ver=附加到网址以“中断”缓存。每当您更改URL时,它都会导致浏览器重新加载资源。将?ver=添加到缓存的资源,并在需要重新加载时进行更改。

有趣但不太实际

创建单页应用,我使用AppCache解决了这类问题。使用应用程序缓存,您可以要求页面重新加载资源。从链接页面:

// Check if a new cache is available on page load.
window.addEventListener('load', function(e) {

  window.applicationCache.addEventListener('updateready', function(e) {
    if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
      // Browser downloaded a new app cache.
      // Swap it in and reload the page to get the new hotness.
      window.applicationCache.swapCache();
      if (confirm('A new version of this site is available. Load it?')) {
        window.location.reload();
      }
    } else {
      // Manifest didn't changed. Nothing new to server.
    }
  }, false);

}, false);

注意,这仅适用于Chrome,Firefox,Safari,Opera和IE10等新浏览器。我想建议一种新的方法。