使用JavaScript强制刷新资产

时间:2015-03-18 13:53:54

标签: javascript browser-cache page-refresh

我在使用浏览器缓存资源(静态文件,如css和js)时遇到问题,而在Web服务器上更新时却没有更新它们。我认为Web服务器(不幸的是IIS 6.0)应该报告上次更改的日期,以便浏览器刷新,但它没有发生。

我正在考虑更改网络应用程序版本时的强制刷新。也许在cookie或HTML5存储上存储版本(在IE中工作?)并在JavaScript看到版本过时时强制刷新。

使用cookie进行JavaScript存储是否可靠?或者我应该用其他方式吗?

我如何使用JavaScript强制刷新?浏览器的F5似乎可以完成这项工作,我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

我用它来重新加载特定项目的主要CSS文件:

   var reloadStyle = function(el) {
       // reload CSS resource without refreshing the whole page
       var updateRandomQuery = function(s) {
           return(s.replace(/nocache=.*$/,'nocache=' + (Math.random()*1000).toFixed()));
       }
       el.setAttribute('href', updateRandomQuery(el.getAttribute('href')));
   }
   // TODO: reload images, etc
   reloadStyle(document.getElementById('MainStyle'));

此脚本可以扩展为一般性地重新加载所有CSS,然后浏览图像和背景图像并重新加载它们。这只需要一些时间,我现在还没有!

所以只是为了清楚地表明,它不会起作用,并且开箱即用"对于任何其他项目。但如果您了解JavaScript,它可以给您一个想法。

我已将这一点JavaScript映射到" Alt-R"使用Chrome Shortkey插件进行组合键。