记录一个浏览器缓存的问题

发布于 2021-12-06 12:56:42 字数 877 浏览 1282 评论 0

网站登出后,浏览器回退,发现发送的 Ajax 请求仍旧为 200

强缓存 和 协商缓存

缓存分为 强缓存 和 协商缓存,详细介绍 参考这里

  • 当 Cache-Control 和 Expires 符合条件,会使用强缓存,返回 200,from dist cache 或 from memory cache
  • 当 Last-Modified,If-Modified-Since 和 ETag、If-None-Match 符合条件,会出现 304 Not Modified。

问题分析

发现项目中的其他资源,比如图片、js 都会符合上述的几种缓存情况,因为 Web 服务器,会帮我们应用缓存的各种策略。

但是项目中的Ajax请求是调用的后端接口,响应头部并没有设置过跟缓存相关的头部,因此缓存基本属于浏览器的行为:

prevent-chrome-from-caching-ajax-requests 提到了两种解决办法:

  • GET 请求才进行浏览器缓存,可以考虑将请求改为 POST
  • 通过在请求地址上加上时间戳 '?_=' + (new Date()).getTime()

显然第一种方式需要后端配合略麻烦,直接其使用第二种方式,全局的 axios 拦截中给 GET 请求添加下即可。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

旧伤慢歌

暂无简介

文章
评论
534 人气
更多

推荐作者

李珊平

文章 0 评论 0

Quxin

文章 0 评论 0

范无咎

文章 0 评论 0

github_ZOJ2N8YxBm

文章 0 评论 0

若言

文章 0 评论 0

南…巷孤猫

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文