Http缓存问题

我在本地有一个index.html文件,用http-server启动并打开了。

同时在头部加入了强制缓存

<meta http-equiv="Cache-Control" content="only-if-cached" />

不修改html的情况下,每次刷新页面都可以看到html请求是走的304缓存,但当我修改了html内容再刷新,发现会重新请求html,没有走缓存。

我的问题是浏览器是如何在请求之前知道我修改了html,从而重新请求的呢?

阅读 2.3k
2 个回答

应该是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了

html 缓存策略无法解决自己的缓存问题。你想想,有人来敲我家门,我肯定是猫眼里先确定他是好人,才会放他进门,不太可能等他坐稳了,我再问他是谁,对吧?

缓存还是走 http header 比较靠谱,因为不仅有浏览器缓存,还有 CDN 缓存、服务器缓存等策略。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题