【发布时间】:2011-09-10 05:44:17
【问题描述】:
在部署新版本的网站后,浏览器会从旧网页的缓存中加载所有内容,直到强制刷新完成。图片是旧的,cookie 是旧的,并且某些 AJAX 部分无法正常工作。
部署后我应该如何继续为用户提供最新版本的页面?
该网页是使用 IIS7+ 的 ASP.Net 网页。
【问题讨论】:
标签: asp.net caching deployment iis-7
在部署新版本的网站后,浏览器会从旧网页的缓存中加载所有内容,直到强制刷新完成。图片是旧的,cookie 是旧的,并且某些 AJAX 部分无法正常工作。
部署后我应该如何继续为用户提供最新版本的页面?
该网页是使用 IIS7+ 的 ASP.Net 网页。
【问题讨论】:
标签: asp.net caching deployment iis-7
您可以在每次部署时更改的每个资源的末尾附加一个变量。例如,您可以为样式表命名:
styles.css?id=1
id 每次都在变化。
这将强制浏览器下载新版本,因为它在缓存中找不到它。
【讨论】:
对于 ASP.NET,您可以使用 cache control and expires headers。您也可以set up similar headers in IIS 7 为您的图像。如果您有任何其他 cookie you can expire them manually.
我还没有尝试过,但看起来您可以在 IIS 7 中更好地批量设置缓存控制。See this thread 和 this link。此时,您只需取消设置您拥有的任何自定义 cookie(您将无法使用 HTTP 缓存控制设置进行控制)。
我不知道有什么方法可以轻松地“一次性取消所有设置”。
【讨论】:
您可以使用 http 标头来控制客户端的缓存。
我就把这个留给你。 http://support.microsoft.com/kb/234067
【讨论】:
Cache-Control: must-revalidate 和 Last-Modified: 15 May 2011 17:43:00 GMT 这是我所知道的控制客户端缓存机制的唯一方法。