在 nginx 和浏览器行为上缓存静态资源
我想缓存静态资源,所以我为静态资源设置了一个过期标头。
设置过期标头后,我注意到:
- Firefox 和 IE 不会向 nginx 发送静态资源请求,
- 但所有其他浏览器(Chrome、Safari、Opera)向我的 nginx 发送请求,nginx 响应 304 Not Modified
是 chrome, Safari、Opera 缓存我的静态资源?这是正常行为吗?如果不是,我还应该做什么,以便其他浏览器缓存静态资源?
I wanted to cache static resources so I set an expires header for static resources.
After setting the expires header, what I notice is:
- Firefox and IE do not send requests to nginx for static resources
- But all other browsers(Chrome, Safari, Opera) send a request to my nginx and nginx responds with 304 Not Modified
Are chrome, safari, opera caching my static resources? Is this normal behaviour? If not what should I do in addition so that static resources are cached by the other browsers?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
仔细查看来自 chrome/safari/opera 的后续 HTTP 请求:
它很可能是一个条件 GET。
另外,304 Not Modified 没有车身。
所以这些浏览器也会缓存,只是不相信内容在过期日期之前保持不变。
他们只是更频繁地闻冰箱里的牛奶:-)
Take a careful look at the subsequent HTTP requests from chrome/safari/opera:
It's most likely a conditional GET.
Also, the 304 Not Modified does not have a body.
So these browser cache too, just don't trust the content to stay the same before the expiration date.
They are just sniffing the milk in the fridge more often :-)