【问题标题】:staticContent ClientCache Setting静态内容客户端缓存设置
【发布时间】:2013-01-25 14:27:35
【问题描述】:

我已将以下内容添加到我的 web.config 以启用 14 天的图像缓存。

  <location path="Images">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMaxAge="14.00:00:00" cacheControlMode="UseMaxAge" />
      </staticContent>
    </system.webServer>
  </location>

使用 F12 工具在 chrome 中查看时,我可以看到在我刷新时浏览器似乎仍然从服务器请求图像。它得到了 304,因此无需再次下载它,但在页面刷新等时,每张图片似乎仍然是一次浪费之旅。

这是正确的行为还是应该像我预期的那样根据文件的标头从缓存中提取?

【问题讨论】:

    标签: .net iis web-config


    【解决方案1】:

    缓存控制是服务器端的,而不是客户端的。所以浏览器仍然需要向服务器请求文件并获取304 才能知道它应该使用其缓存副本。

    考虑下面的 HTML(无论图片是否设置为从缓存返回都完全相同),浏览器如何知道是下载图片还是使用缓存版本?

    <img src="somefile.jpg" />
    

    客户端不知道,因为它不像服务器在呈现给浏览器的img标签上设置某种cache-image="true"属性。

    【讨论】:

    • 这个答案对我来说没有任何意义。据我了解,这不仅仅是服务器端。当浏览器第一次请求 somefile.jpg 时,它会收到带有指定缓存版本何时过期的标头。从那时起,浏览器确切地知道它何时到期,并且根本不必再次联系服务器(直到指定的到期时间)。它只是转到客户端计算机上的本地缓存。
    猜你喜欢
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2015-08-07
    • 2015-10-04
    相关资源
    最近更新 更多