如何检测XHR何时返回缓存资源?

fil*_*p26 12 ajax http xmlhttprequest http-caching http-headers

我想知道是否有办法检测何时从本地缓存返回响应?可能吗?

解决方案应该是通用的,适用于无条件请求.在这种情况下,响应代码始终为200 OK,但XHR返回第二个请求的缓存资源(例如,第一个响应包含Expires头,因此无需在到期日期之前向服务器请求新资源).

fil*_*p26 7

答案是Date标题

  • 如果日期标题在发送日期之前,则响应来自缓存.
  • 如果日期标题是在发送请求的日期之后,则响应是新鲜的.

例如

  • 来自缓存:请求在11:00发送,响应日期是10:59
  • 没有缓存:请求是在11:00发送的,响应日期是11:01

  • 我尝试过这种方法。这看起来很有希望......但事实证明,如果您的内容由 Cloudfront 缓存,它也会有一个旧日期,然后您无法判断是否从本地浏览器缓存或 Cloudfront 检索响应(除了通过保留关注网络活动)。 (3认同)