caching - 没有过期的 header 发送,内容被缓存,浏览器发出条件GET请求之前需要多长时间?

标签 caching browser cache-control

假定浏览器为默认设置,并且内容发送时没有 header 过期。

  • 用户访问网站,浏览器缓存图像等。
  • 用户不会关闭浏览器或刷新页面。
  • 用户继续正常浏览网站。
  • 假定浏览器出于任何原因都不会转储缓存。

  • 浏览器将在用户浏览时缓存图像等,但是尚不清楚何时会发出条件GET请求以询问内容新鲜度(除了刷新页面外)。如果这是特定于浏览器的设置,那么在哪里可以看到它的值(对于safari,IE,FireFox,Chrome等浏览器)。

    [编辑:是的-我了解您应该始终发送过期 header 。但是,这项研究的目的是了解浏览器如何处理不带 header 的内容。]

    最佳答案

    HTTP / 1.1定义了一些缓存机制; expires header 仅仅是一个,还有cache-control header 。

    要直接回答您的问题:对于没有expires header 返回的资源,您必须考虑返回的cache-control指令。

    HTTP / 1.1对于没有与缓存相关的 header 提供服务的资源,没有定义任何缓存行为。如果发送的资源没有cache-controlexpires header ,则必须假定客户端在下次请求相同资源时将发出常规(无条件)请求。

    与此行为的任何背离都将使该客户端成为不是完全符合要求的HTTP客户端,在这种情况下,问题就变成了:不符合要求的HTTP客户端应期待什么行为?没有办法回答。

    HTTP缓存非常复杂,要完全了解在特定情况下一致性客户端应执行的操作,请阅读并了解HTTP caching spec

    关于caching - 没有过期的 header 发送,内容被缓存,浏览器发出条件GET请求之前需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860216/

    相关文章:

    javascript - JQuery:Ajax 缓存 - 性能?

    android - Android 4+ 浏览器上固定 header 上方的间隙

    java - 使用 SWT 浏览器小部件进行打印

    java - 在 Dropwizard 中禁用静态 Assets 缓存

    caching - 使用 SSE/AVX 对压缩双向量的部分进行非时间存储

    c# - Microsoft.Extensions.Caching.Memory.IMemoryCache 线程安全吗

    android - 缓存位图 - 检查当前 VM 预算

    javascript - 如何使用 Rxjs switchMap 抛出错误

    apache2 - Apache 提供旧版本的文件

    c# - c# - 当用户在asp.net中使用c#注销时如何清除浏览器缓存?