部署新代码后强制缓存刷新

时间:2017-03-28 20:19:17

标签: asp.net iis-7 iis-7.5 browser-cache http-caching

我们遇到的问题是,在部署代码之后,我们的客户端将提供过时的js,css文件。我们使用IIS作为我们的网络服务器,我们的代码在ASP.Net 4.5中。我做了一些研究,并发现ETag与Cache-control一起工作。据我所知,ETag是由Web服务器根据文件的日期时间戳自动生成的,所以我运行了以下步骤,看看为什么系统没有发送最新版本的js和css文件。

  1. 导航到我的网站访问网页,我们的调用是demo.aspx。(现在假设demo.aspx包含对a.js,b.js和c.css的引用)
  2. 验证浏览器请求a.js,b.js和c.css文件,并且在我在网站上硬盘(Ctrl + F5)之后,网络服务器提供了这些文件。
  3. 点击其他网页
  4. 去网站并手动更新文件(a.js,b.js和c.css以更新这些文件的日期时间戳)
  5. 再次导航到demo.aspx。
  6. 这次我只看到对demo.aspx的请求,但没有看到任何资源文件(a.js,b.js和c.css)。
  7. 当我访问我的demo.aspx页面时,我不知道为什么没有请求.js文件。

    此外,是否有任何简单的方法可以强制客户端浏览器在每次部署代码时下载最新版本的.js和.css文件。根据我的研究,我确实发现一种方法是重命名.js和.css文件。请注意,这个消息对我们不起作用。

    我们在项目中使用更新面板。不确定这是否与浏览器第二次没有请求js文件有关

1 个答案:

答案 0 :(得分:0)

一个广泛使用的技巧是添加一个查询字符串参数,该参数随每个新版本的cssjs文件递增。

myScript.js?version=12。当数字发生变化时,浏览器会将其视为新文件并将其下载而不是从缓存中检索。

只需通过编辑文件来更改时间戳,浏览器就无法从服务器获取时间戳。您可以通过从网站保存图像或文件来尝试此操作,它们都具有下载时间的时间戳。