Skip to content
文章目录

前端打包缓存控制

缓存的作用

加快网页的访问速度

不合理的缓存会造成什么结果

前端每次发版,浏览器存在缓存要强制刷新才能看到更新

有哪些资源会被缓存

  • 页面
  • 图片
  • css
  • js

打包时如何合理的清除资源缓存

前端打包时,根据资源内容进行 hash,然后将这个 hash 值作为资源名称的一部分,那么有改动内容的资源,他的资源名称会变得不一样,没有任何内容改变的资源,他的资源名称就会始终一样。这样的话这些 css,图片,js 就能合理的应用缓存了,资源改变了,就会获取新新文件的内容,资源没改变,如果有缓存就优先从缓存中获取

index.html 文件如何清除缓存

SPA 应用一般只有一个静态页面index.html,你以为你 css,图片,js 都合理的清除缓存就足够了?殊不知你的index.html也被浏览器缓存了,如果你不做特殊配置,每次发版之后,客户浏览器访问的index.html,实际都是浏览器缓存的index.html内容, 而index.html中记录的是静态资源js,css,图片资源的请求地址,这些资源可都是可以被缓存的,所以,即使你css,图片,js资源都存在最新数据,且资源的名称都和上个版本不同,但客户浏览器获取到的资源或者说看到的界面还是上个版本的。这就是因为index.html没有被清除缓存的结果。

清除index.html文件的缓存

index.htmlmeta 标签中定义禁止浏览器缓存该 html 文件(所有需要禁止缓存的 html 资源,都可以加上这些meta标签, 用来告知浏览器不要缓存这个html

html
<head>
  <meta http-equiv="cache-control" content="no-cache,no-store, must-revalidate" />
  <meta http-equiv="pragma" content="no-cache" />
  <meta http-equiv="Expires" content="0" />
</head>

参考资料

【解决彻底】vue 前端发版后要刷新才能看到更新问题

处理 Vue 入口文件 index.html 被缓存的问题