我在本地有一个index.html文件,用http-server启动并打开了。
同时在头部加入了强制缓存
<meta http-equiv="Cache-Control" content="only-if-cached" />
不修改html的情况下,每次刷新页面都可以看到html请求是走的304缓存,但当我修改了html内容再刷新,发现会重新请求html,没有走缓存。
我的问题是浏览器是如何在请求之前知道我修改了html,从而重新请求的呢?
我在本地有一个index.html文件,用http-server启动并打开了。
同时在头部加入了强制缓存
<meta http-equiv="Cache-Control" content="only-if-cached" />
不修改html的情况下,每次刷新页面都可以看到html请求是走的304缓存,但当我修改了html内容再刷新,发现会重新请求html,没有走缓存。
我的问题是浏览器是如何在请求之前知道我修改了html,从而重新请求的呢?
html 缓存策略无法解决自己的缓存问题。你想想,有人来敲我家门,我肯定是猫眼里先确定他是好人,才会放他进门,不太可能等他坐稳了,我再问他是谁,对吧?
缓存还是走 http header 比较靠谱,因为不仅有浏览器缓存,还有 CDN 缓存、服务器缓存等策略。
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.2k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
应该是http-server自己的缓存策略吧,http-equiv并不是所有的头都能写:
https://developer.mozilla.org...
所以这个Cache-Control应该是不生效的,打开控制台看一下网络请求,only-if-cached还是个请求头值。
http-server自己的缓存策略是3600s,并且有If-Modified-Since和If-None-Match,修改文件会导致last-modified和etag发生变化,自然就会200了