【问题标题】:cache problem in asp.netasp.net中的缓存问题
【发布时间】:2011-02-28 20:26:36
【问题描述】:

我看到一些使用浏览器缓存的静态页面存在问题,这是不需要的。为了防止缓存,我正在设置

<clientCache cacheControlMode="DisableCache" />

在 web.config 中相关的&lt;location&gt; 标签中

如果我在 Firebug 中打开页面(在 Net 选项卡中),我看到响应标头有 Cache-Control: no-cache 这是正确的,但响应的状态是 304 Not修改!这不是矛盾吗?如何让它停止缓存(即始终发送 200 内容)?

【问题讨论】:

  • 一个更好的问题可能是......“为什么 IIS 不认为它拥有的文件是更新的?”如果你能解决这个问题,那么你就不需要通过关闭缓存来降低性能。

标签: asp.net iis-7 caching


【解决方案1】:

根据 RFC(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1,第 14.9.1 节)缓存控制:no-cache 告诉浏览器不要使用缓存的内容没有先与服务器重新验证。这就是为什么您会看到 304 的原因。我想你正在寻找Cache-Control: no-store

我不确定您是否可以通过配置文件发送 no-store。但是,您可以在响应中明确设置标头:

Response.Cache.SetNoStore();

编辑:(由 OP)

我正在寻找的是:

<clientCache cacheControlCustom="no-store" />

【讨论】:

  • 但我试图在 web.config 中完成此操作,而不是在代码中。有比 更好的选择吗?
  • 试试这个(未经测试!):
  • 此页面iis.net/ConfigReference/system.webServer/staticContent/… 没有将“no-store”列为可能的设置
  • 但它确实说它的列表并不全面,并提供了对 RFC 2616 的参考(请参阅我上面的链接)。您可以使用 cacheControlCustom 将缓存控制标头设置为任何自定义值,在本例中为“no-store”,这在 RFC 中是有效的。
  • @PK,哎呀!我没有仔细阅读您之前的评论,看不到您使用了不同的属性(cacheControlCustom 而不是 cacheControlMode)
猜你喜欢
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多