ASP.NET - 使浏览器缓存无效

Geo*_*XYZ 5 asp.net caching invalidation

我有一个与缓存失效技术有关的问题......我正在尝试为我的网站实现一种机制,它会自动使浏览器缓存无效(css,images ...).每当我更新网站(更改图像或样式)时,我希望能够以编程方式使浏览器缓存无效;

例如:对于当前版本,css和一些图像已经改变.在这种情况下,我希望在更新完成后,当用户对网站执行请求时,他的浏览器缓存会自动失效,从而迫使重新下载新的图像和样式.这应该只针对客户端的第一个请求...应该从缓存中检索以下内容(因此设置no-cache pragma是不可能的).

这是我尝试过的:在BeginRequest事件处理程序中,我添加了以下行:Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate); Response.Cache.SetETag( "\" e111293b17594f1487d136ea7e9314ac\"");

这会在响应头中设置ETag.我想如果我在每个版本中更改此ETag,并在每个请求中设置它,缓存将失效,但似乎不是.我使用Live HTTP头来查看结果,并且ETAG已正确设置为响应,但css和图像仍然来自缓存....

有关如何实现这一目标的任何想法,或者它是否可以完成?

提前致谢!

Bob*_*Bob 5

我过去遇到过这样的问题.不幸的是,我找不到一个非常好的方法来完成这个,所以我不得不想出一个解决方法.我只处理CSS文件的这个问题,所以我为每个CSS引用添加了一个额外的查询字符串参数,例如

 <link rel="stylesheet" type="text/css" 
       href="default.css?buildnumber=<%= Buildnumber %>" />
Run Code Online (Sandbox Code Playgroud)

随着每个版本的增加,内部版本号会增加,因此浏览器被迫寻找这个新文件.不是一个理想的解决方案,但它顺利运作.