CDN缓存404、403状态码

可以参考一下:浏览器缓存和 CDN 在前端的落地

事故记录:

  1. 前端发版时存在新旧两个容器,在资源替换的间隙,用户请求到的肯定是新容器的html文件,但是根据新容器的html向新静态资源发起请求,此时旧容器还没有完全被替换,在部分边缘节点中仍然存在旧容器,向新资源发起的请求到了旧容器内自然就失败了,返回404 not found。
    但是问题是:请求失败后静态资源返回404却被CDN缓存了,导致用户一直刷新,向新资源请求,哪怕节点已经被新容器替换了,CDN还是以为之前已经请求成功了,不会回源,一直返回缓存的404。

解决办法

  1. 采用灰度上线(根本解决)
  2. CDN清除缓存。(快速解决)
  3. 先上线静态资源,再把HTML上线。以及 针对非正常的状态码(HTTP Status 200)应该设置不缓存。
  4. 针对本地缓存的静态资源通过完全更换打包资源名称,或者更新nextjs的静态资源前缀,修改为一个OSS链接,然后将静态资源手动部署到OSS上,新上线之后的新版本就直接走OSS链接,之前的404资源失效。
相关推荐
前端没钱6 天前
解锁React前端框架的魅力与实操攻略
前端框架·reactjs
赵大仁8 天前
从零开始掌握 React 前端框架:入门指南与实战案例
前端·javascript·react.js·前端框架·开源·reactjs·html5
某公司摸鱼前端8 天前
react 使用 PersistGate 白屏解决方案
前端·javascript·react.js·前端框架·reactjs
解道Jdon8 天前
什么是Web极简架构
javascript·reactjs
解道Jdon14 天前
JDK HTTP 服务器:真实世界后端开源演示
javascript·reactjs
猫头虎16 天前
小程序多入口对应指定客服的实现方案:小程序如何实现接入指定客服人员?
前端·vue.js·小程序·前端框架·npm·html·reactjs
@ 前端小白24 天前
taro使用createAsyncThunk报错ReferenceError: AbortController is not defined
reactjs·taro
MaxCosmos200124 天前
挑战用React封装100个组件【002】
css·前端框架·reactjs·组件·样式
奔跑草-1 个月前
【前端】Next.js 服务器端渲染(SSR)与客户端渲染(CSR)的最佳实践
开发语言·前端·javascript·react.js·reactjs
前端青山1 个月前
使用脚手架搭建React项目
开发语言·前端·javascript·前端框架·reactjs