vue打包部署,浏览器缓存问题访问旧的版本

vue项目打包部署后,用浏览器访问,如果更新迭代后再次打包部署,浏览器访问的可能还是之前版本的vue页面,就是说浏览器后缓存的问题,清空缓存是可以决定问题,但是是否可以在代码层面解决问题呢?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7756753
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:vue - 网站接入微信扫码登录功能详细教程,完整详细流程及完整功能示例源代码(附常见问题的解决方案与二维码样式修改方案)
  • 除此之外, 这篇博客: 【Vue复习】Vue面试题收记录中的 数据更新视图没更新,这说明是vue并未检测到属性的改变,如果是对象那么可能是直接新增或者是删除了属性,或者是数组,或者数据不是响应式的,vue不能检测数组直接通过索引修改数组项 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    那是vue的域更新是异步的,因为即当setter操作发生后,并不会立马更新,指令的更新操作会有延迟,当指令更新真正执行的时候,此时修改的属性属性已经设置,所以指令更新模板时得到的是新值。

  • 您还可以看一下 徐照兴老师的Vue全家桶从基础入门到进阶项目实战第三篇中级进阶实战篇课程中的 改变上面例子需求,增加逻辑判断 小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    对于Vue项目中浏览器缓存导致访问旧版本页面的问题,可以通过以下方式解决:

    1. 使用文件版本号:

    在Vue项目的构建配置文件(vue.config.jswebpack.config.js)中,可以通过为构建文件添加版本号的方式解决缓存问题。具体步骤如下:

    • 在构建文件的output项中,将文件名改为包含带有版本号的文件名,例如:[name].[chunkhash].js
    • 在构建文件的plugins项中,使用webpack-manifest-plugin插件生成一个文件清单,清单中包含了构建后的文件名与实际引用的路径之间的映射关系。
    • 在HTML模板文件中,使用scripts标签引用构建后的文件,在标签内使用动态生成的文件名。

    这样的话,每次构建时文件名会变化,浏览器会重新请求新的文件。

    示例代码:

    const ManifestPlugin = require('webpack-manifest-plugin');
    module.exports = {
      // ...
      output: {
        filename: '[name].[chunkhash].js',
        // ...
      },
      plugins: [
        new ManifestPlugin()
        // ...
      ],
      // ...
    }
    
    1. 使用meta标签禁用缓存:

    在HTML模板文件中,可以通过添加meta标签来控制浏览器缓存行为。可以设置http-equiv属性为Cache-Control,值为no-cache, no-store, must-revalidate。这样每次访问页面时浏览器都会重新请求。

    示例代码:

    <!DOCTYPE html>
    <html>
    <head>
      <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
      <!-- ... -->
    </head>
    <body>
      <!-- ... -->
    </body>
    </html>
    

    通过以上两种方式,可以在代码层面解决浏览器缓存导致访问旧版本页面的问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

在资源路径后面添加时间戳如url?t=135466525