我在html中新增一个img标签,src指向一个图片。
请求src图片的 response header:
expires: Thu, 09 Jan 2025 18:23:25 CST
我等到18:24的时候访问,发现chrome并没有请求图片,而是直接从浏览器内存取。
现在18:42,我刷新浏览器,发现仍然是没有向后台服务器请求图片。
为啥不发起新的请求?明明图片已经过期了。
我想大家,chrome是如何处理expires的,为啥不会过期呢?
多半是时区问题,响应头返回的过期时间是 CST
格式,这个是有一点歧义的,开头的C是指 China
还是 Central
或者是其他。所以最好是使用 GMT
格式的形式返回。我的话一般都是直接写有效时间数,比如说:
location / {
expires 72h; # 72小时后过期
}
location / {
expires -1; # 直接过期
}
自问自答吧。
我写的Expires有问题,格式不对,必须以GMT结尾!
具体语法请参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Date
chrome因为识别不了日期,或者识别成了其他时间,导致无法过期!
# 回答
Chrome浏览器在处理HTTP缓存时不仅仅依赖于`Expires`头部字段,它还会考虑其他缓存控制机制,如`Cache-Control`头部字段。在你的情况中,尽管`Expires`头部字段指示了一个过期时间,但可能存在以下几种情况导致Chrome没有发起新的HTTP请求:
1. **Cache-Control头部覆盖Expires**:如果响应中同时存在`Cache-Control`和`Expires`头部字段,`Cache-Control`的优先级通常更高。例如,如果`Cache-Control`设置为`max-age=3600`,这意味着资源将被缓存3600秒,无论`Expires`头部如何设置。
2. **浏览器缓存策略**:现代浏览器(包括Chrome)有自己的缓存策略,这些策略可能会根据用户的偏好、网络状况或隐私设置进行调整。例如,Chrome可能会在用户处于隐身模式下或当缓存大小达到限制时减少缓存的使用。
3. **服务工作者或其他缓存层**:如果你的网站使用了服务工作者(Service Workers)或应用缓存(AppCache)等机制,这些也可能影响资源的缓存和请求行为。
4. **浏览器缓存错误或不一致**:在某些情况下,浏览器的缓存机制可能会出现错误或不一致,导致它未能正确遵循HTTP头部字段的指示。
5. **网络延迟或时间同步问题**:虽然这不太可能是你遇到的问题的直接原因,但值得注意的是,网络延迟或客户端与服务器之间的时间同步问题也可能影响缓存策略的实施。
为了解决这个问题,你可以:
- 检查响应中是否还有其他缓存控制头部字段(如`Cache-Control`)。
- 使用浏览器的开发者工具(如Chrome DevTools)查看网络请求的详细信息,特别是缓存策略和响应头部字段。
- 清除浏览器缓存或尝试在无痕模式下打开页面,以排除缓存干扰。
- 如果使用了服务工作者或应用缓存,请检查相关代码和配置。
希望这些信息能帮助你理解Chrome如何处理`Expires`头部字段以及为什么你的图片请求没有按预期过期。
代码如下,有无大佬解答 orz
ES 内针对不同阶段,设计有不同的缓存。以此提升数据检索时的响应性能。主要包括节点层面的 filter cache 和分片层面的 request cache。下面分别讲述。 filter cache ES 的 query DSL 在 2.0 版本之前分为 query 和 filter 两种,很多检索语法,是同时存在 query 和 filter 里的。比如最常用的 term、prefix、rang
在主线程中如果使用 fetch 发起请求,一般有 6 个或者是 10 个的并发请求限制。而 worker 也是可以发起 fetch 请求的,请问一下浏览器是否会对一个主线程中创建的 worker 线程有个数限制还有一个 worker 线程中是否对发起的 fetch 请求也有类似的并发限制?
本文向大家介绍浅谈Ajax请求与浏览器缓存,包括了浅谈Ajax请求与浏览器缓存的使用技巧和注意事项,需要的朋友参考一下 在现代Web应用程序中,前端代码充斥着大量的Ajax请求,如果对于Ajax请求可以使用浏览器缓存,那么可以显著地减少网络请求,提高程序响应速度。 1. Ajax Request 使用jQuery框架可以很方便的进行Ajax请求,示例代码如下: 非常简单,注意其中的第4行代码:ca
问题内容: 我想在我正在使用的Web应用程序上测试一些URL。为此,我想手动创建HTTP POST请求(这意味着我可以添加我喜欢的任何参数)。 我缺少Chrome和/或Firefox中的任何扩展程序或功能吗? 问题答案: 我一直在为这种类型的东西制作一个名为Postman的Chrome应用。所有其他扩展似乎都过时了,所以我自己做了。它还具有许多其他功能,这些功能有助于在此处记录我们自己的API。
本文向大家介绍 浏览器http请求过多怎么解决?相关面试题,主要包含被问及 浏览器http请求过多怎么解决?时的应答技巧和注意事项,需要的朋友参考一下 (1) 合并JS、CSS文件 (2) 合并图片css sprite (3) 使用 Image maps (4) data嵌入图片:如base64 (5) 使用CDN,减少http请求头 Web安全
问题内容: 我想确保通过AJAX调用请求的数据是新鲜的,而不是被缓存的。为此,我发送标题 但是如果用户按下F5键,我的Chrome版本33会覆盖此标头。 例。将内容与您的网络服务器放在一起 在网络标签上的Chrome调试器中,我看到了test.html AJAX调用。状态代码200。现在按F5重新加载页面。最长寿命:0,状态码304未修改。 Firefox表现出类似的行为。只是覆盖了请求标头,它会