【问题标题】:304 Status code for my Azure CDN images hosted in Azure Blob Storage托管在 Azure Blob 存储中的 Azure CDN 映像的 304 状态代码
【发布时间】:2012-03-04 13:41:13
【问题描述】:

我的图像存储在 azure blob 存储中,并使用我的 azure CDN 通过我的 Web 应用程序进行引用。但是,所有图像都返回 304 响应标头。理想情况下,我不希望浏览器返回 CDN 以检查每个请求的有效性,而是让浏览器始终使用缓存。 - 在图像缓存的生命周期内。

由于我对缓存的了解有限,我了解缓存使用 ETag 值来比较请求时图像的版本是否相同。在这种情况下,它是并且 CDN 返回 304 响应。但是因为 CacheControl 标头设置为公共,max-age=2592000 我希望浏览器会使用图像的缓存副本。我有另一个 CDN 设置,它有一个托管服务端点,它返回 200 响应,因为我删除了 ETag 值。

对此的任何帮助将不胜感激。

【问题讨论】:

  • 几个问题。您是说“max-age”而不是“max-set”吗?响应中是否还有 Expires 标头?我们在这里谈论的是什么浏览器?
  • 确实是指最大年龄。 Expires 标头不在响应中,我正在使用 firefox 中的 firebug。

标签: cdn azure-storage http-status-codes


【解决方案1】:

ETag“触发”304响应=>浏览器已向服务器发送If-None-Match验证请求。这通常在max-age 过去之后完成。你可以在这里找到一个很好的描述:

https://stackoverflow.com/a/500103/2550808

还值得一提的是,Firefox 浏览器设置应设为默认:转到about:config 页面并检查此设置:http://kb.mozillazine.org/Browser.cache.check_doc_frequency

回到您的问题,服务器返回给浏览器的 Cache-Control 标头可能有问题。根据我谦虚的个人经验,我没有明确遇到 public 版本的标头,更有可能是这样:

Cache-Control: max-age=3600, must-revalidate

无论如何,这里对与缓存有关的标头进行了很好的描述:

https://www.mnot.net/cache_docs/

或者,可能还有其他需要考虑不断重新验证的原因:

  • 服务器对文件的 200 响应中的 VARY 标头可能会影响缓存;
  • JavaScript 在位置对象上调用 reload,为 bReloadSource 传递 TRUE;

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 2018-06-26
    • 2016-09-12
    • 2020-12-23
    • 2012-05-18
    • 2021-05-05
    • 2019-09-19
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多