比尔萄堡

上帝说: “要有光” 于是,就有了光。


  • 首页

  • 归档

  • 关于我

  • 公益404

  • 搜索

记一次微信页面缓存排查

时间: 2023-02-17 分类: 问题排查/日常问题   字数: 527 字 阅读: 2分钟 阅读次数:

问题发现

前端发现一个链接,重新打开后,发现页面并没有更新。
在电脑Chrome浏览器查看css文件和js文件,看到大多是200 from disk/memory,没有request header,说明走的是强缓存,不发送请求,直接从缓存里取。

缓存机制

浏览器先确定第一次资源请求,返回的response header,有没有cache-control,有的话并且设置了缓存,会进行强缓存。如果是no-cache,查看etag,或者last-modified,有二者之一的话,会进行协商缓存,下次请求会向服务器发起请求,若资源没变化,返回304响应和空响应体。

疑问点

如果第一次请求,没有设置cache-control,但是设置了etag,会有什么表现呢?会直接走协商缓存吗?
根据stackoverflow某一个问答,得知会进行强制缓存,但缓存时间会根据不同浏览器,有所不用。
比较神奇的一个现象是,第一次资源请求后,一直是使用200强制缓存。更新版本后,刷新后chrome很快会改为最新版本。而微信重新打开链接,不会发现改变,除非手动点击三个点,点刷新。在nginx增加 cache-control: no cache后,这才调整了微信强制缓存的表现。

深入理解浏览器缓存机制
What’s default value of cac. e-control?
微信,请不要缓存我的页面

#缓存# #浏览器#

标题:记一次微信页面缓存排查

作者:训导主任林作栋

声明: 本博客文章除特别声明外,均采用 CC BY-NC-SA 3.0许可协议,转载请注明出处!

创作实属不易,如有帮助,那就打赏博主些许茶钱吧 ^_^
WeChat Pay

微信打赏

Alipay

支付宝打赏

记一次tidb的 Unknown column 'xxx' in 'field list'
gitlab的三种access token
训导主任林作栋

训导主任林作栋

戏谑的码农,北野武的拥趸,李安的迷弟,伍佰的Fans

55 日志
23 分类
62 标签
豆瓣
友情链接
  • Obsidian
  • V2EX
  • 关注黑客与极客
  • 廖雪峰
标签云
  • Linux 6
  • K8s 5
  • 数据库 5
  • Golang 4
  • Etcd 3
  • Mysql 3
  • Ai 2
  • Gitlab 2
  • Postgres 2
  • 前端 2
© 2010 - 2024 比尔萄堡
Powered by - Hugo v0.58.2 / Theme by - NexT
/
Storage by Vercel / 刘 ICP 备 18047355 号
0%