关于vite项目中可能存在的前端资源加载报错

直接上事故现场:

关键字:LINK load fail,preloadError,vite,preload

vite官方文档

构建生产版本 | Vite 官方中文文档

事故产生原因分析

这个报错大量发生在项目重新部署后,按照官方的说法是缓存问题

为了解决缓存问题,前端做了什么?

产物名称加hash

防止重新部署后,因为浏览器缓存了部分之前版本的文件,用户端混淆着新旧版本的代码,导致项目出错,当然这个优化这个vite已经默认帮我们做了

产物增量部署

防止重新部署后,用户加载的html还在历史版本,假如部署时删掉历史版本的产物,在历史版本的用户可能会因加载不到旧版本的资源文件报错

<meta http-equiv="cache-control" />

html 复制代码
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" />

在入口HTML文件中,可以配置这个meta标签,来告知浏览器不要缓存HTML文件

划重点

然而,通常来说服务端返回的response header中的缓存策略可能优先级更高!所以......最好在Nginx中配置响应头,而不是在HTML中配置

ps:关于这块内容,可以自行百度浏览器中的强缓存和协商缓存学习,(多年背的面试题终于派上用场了)

域名加版本号/时间戳后缀

bash 复制代码
<web-view
  :src="`https://www.baidu.com?__v=${versionCode}&__t=${dayjs().unix()}`"
/>

(别问,问就是write once、debug anywhere 的uniapp开发)

and more

可能还有疏漏的地方......

做的还不够吗?

c端应用的运行环境确实复杂,可能也有笔者疏漏的地方,总之还是按照vite的文档加上

js 复制代码
window.addEventListener('vite:preloadError', (event) => {
  window.location.reload() // 例如,刷新页面
})

最后别忘了

js 复制代码
window.removeEventListener('vite:preloadError', callBack)
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师3 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学3 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端