vite+vue3不清除浏览器缓存直接下载最新代码的解决方案

 更新时间:2024年06月14日 11:00:42   作者:Cola-blog  
vite+vue3项目发布后,浏览器上还是旧代码,没有及时更新到最新代码,下面通过本文给大家分享vite+vue3不清除浏览器缓存直接下载最新代码的解决方案,感兴趣的朋友一起看看吧

背景:

vite+vue3项目发布后,浏览器上还是旧代码,没有及时更新到最新代码。

解决:

vite采用的rollup打包。rollup打包默认输出文件格式[name]-[hash].js,将输出格式改为[name].[hash].js解决了上述问题。

 build: {
      rollupOptions: {
        output: {
          entryFileNames: `assets/[name].[hash].js`,
          chunkFileNames: `assets/[name].[hash].js`,
          assetFileNames: `assets/[name].[hash].[ext]`,
        }
      },
    },

原因:

[name]-[hash].js[name].[hash].js有什么区别

讨论[name]-[hash].js[name].[hash].js这两种命名方式时,浏览器缓存的行为确实是一个关键点。这两种命名策略的主要区别在于哈希值的应用范围和计算方式,这直接影响到浏览器如何识别文件的更新和是否需要清除缓存来下载新文件。

[name]-[hash].js

  • 在这种命名方式中,-连接符用于将文件名([name])和哈希值([hash])分开。这里的[hash]通常是对整个文件内容的哈希。当文件内容发生任何变化时,哈希值都会变化,从而生成一个新的文件名。
  • 缓存行为:如果文件名(包括哈希值)发生了变化,浏览器通常会认为这是一个全新的文件,因此会忽略缓存并重新下载。然而,如果构建过程中存在某些问题,导致文件内容更新但哈希值没有变化,那么浏览器可能会继续使用缓存中的旧文件,因为它认为文件名(和哈希值)没有变化。

[name].[hash].js

  • 在这种命名方式中,.点连接符用于将文件名和哈希值分开。这里的[hash]可能是基于整个构建内容的哈希,而不仅仅是单个文件的内容。这意味着即使单个文件没有变化,但如果构建过程中其他文件有变动,该文件的哈希值也可能发生变化。
  • 缓存行为:由于哈希值是基于整个构建内容的,即使单个文件没有变化,它的文件名(和哈希值)也可能因为其他文件的变动而发生变化。这通常意味着浏览器会忽略缓存并重新下载该文件,即使它的内容实际上没有变化。

为什么[name]-[hash].js有时需要清除浏览器缓存?

尽管[name]-[hash].js命名方式旨在通过哈希值来确保浏览器识别文件的更新,但在某些情况下,你可能仍然需要清除浏览器缓存:

  • 缓存控制指令:如果服务器返回的HTTP响应头中设置了缓存控制指令(如Cache-ControlExpires),这些指令可能会告诉浏览器缓存文件更长的时间,即使文件名(和哈希值)发生了变化。
  • 服务器或CDN缓存:如果你的应用部署在具有缓存层的服务器或CDN后面,这些缓存层可能会缓存旧的文件版本,即使文件名已经变化。
  • 浏览器行为:某些浏览器或插件可能有自己的缓存机制,这些机制可能不总是按预期工作。

为什么[name].[hash].js通常不需要清除浏览器缓存?

由于[name].[hash].js中的哈希值是基于整个构建内容的,即使单个文件的内容没有变化,但其他文件的变动也可能导致哈希值变化,进而改变文件名。这通常意味着浏览器会忽略缓存并重新下载该文件,因此不需要手动清除浏览器缓存。

总结:

  • [name]-[hash].js[name].[hash].js的主要区别在于哈希值的计算方式和范围。
  • 在大多数情况下,[name]-[hash].js能够确保浏览器在文件内容变化时下载最新文件,但有时可能需要清除缓存。
  • [name].[hash].js由于哈希值基于整个构建内容,通常不需要手动清除浏览器缓存即可确保下载最新文件。

到此这篇关于vite+vue3不清除浏览器缓存直接下载最新代码的解决方案的文章就介绍到这了,更多相关vite vue3下载最新代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue表单输入绑定的示例代码

    Vue表单输入绑定的示例代码

    这篇文章主要介绍了Vue表单输入绑定的示例代码,本文使用v-model指令在表单input创建双向数据绑定,非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • vue插件mescroll.js实现移动端上拉加载和下拉刷新

    vue插件mescroll.js实现移动端上拉加载和下拉刷新

    这篇文章主要介绍了vue插件mescroll.js实现移动端上拉加载和下拉刷新,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 用了babel还需要polyfill吗原理解析

    用了babel还需要polyfill吗原理解析

    这篇文章主要为大家介绍了用了babel是否还需要polyfill的原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • vue3+vite使用postcss-pxtorem、autoprefixer自适应和自动添加前缀

    vue3+vite使用postcss-pxtorem、autoprefixer自适应和自动添加前缀

    这篇文章主要介绍了vue3+vite使用postcss-pxtorem、autoprefixer自适应和自动添加前缀方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue路由传参三种基本方式详解

    vue路由传参三种基本方式详解

    这篇文章主要介绍了vue路由传参三种基本方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • vue中的h函数使用及说明

    vue中的h函数使用及说明

    这篇文章主要介绍了vue中的h函数使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Vue自定义指令实现点击右键弹出菜单示例详解

    Vue自定义指令实现点击右键弹出菜单示例详解

    这篇文章主要为大家介绍了Vue自定义指令实现点击右键弹出菜单示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 对Vue table 动态表格td可编辑的方法详解

    对Vue table 动态表格td可编辑的方法详解

    今天小编就为大家分享一篇对Vue table 动态表格td可编辑的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue动态路由刷新失效以及404页面处理办法

    vue动态路由刷新失效以及404页面处理办法

    作为一个前端新手,项目中遇到权限处理时,通常会采用动态添加路由的方法来实现,下面这篇文章主要给大家介绍了关于vue动态路由刷新失效以及404页面处理办法的相关资料,需要的朋友可以参考下
    2023-11-11
  • vue使用天地图、openlayers实现多个底图叠加显示效果

    vue使用天地图、openlayers实现多个底图叠加显示效果

    这篇文章主要介绍了vue使用天地图、openlayers实现多个底图叠加显示,根据返回的经纬度列表通过天地图、openlayers实现底图添加,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-04-04

最新评论