当前位置:首页 > VUE

vue打包实现http缓存

2026-02-24 12:59:17VUE

实现 Vue 项目打包后的 HTTP 缓存

配置 Webpack 输出文件名哈希

vue.config.js 中配置 Webpack 的 output.filenameoutput.chunkFilename 使用哈希值。这样每次文件内容变化时,哈希值会改变,确保浏览器获取最新文件。

module.exports = {
  configureWebpack: {
    output: {
      filename: '[name].[contenthash:8].js',
      chunkFilename: '[name].[contenthash:8].js'
    }
  }
}

设置静态资源缓存策略

在服务器配置中为静态资源设置长期缓存头。以下是 Nginx 的配置示例:

location / {
  try_files $uri $uri/ /index.html;
  expires 1y;
  add_header Cache-Control "public, max-age=31536000, immutable";
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
  expires 1y;
  add_header Cache-Control "public, max-age=31536000, immutable";
}

使用 Service Worker 缓存

通过 workbox-webpack-plugin 实现更精细的缓存控制:

vue打包实现http缓存

const { InjectManifest } = require('workbox-webpack-plugin')

module.exports = {
  configureWebpack: {
    plugins: [
      new InjectManifest({
        swSrc: './src/service-worker.js',
        swDest: 'service-worker.js'
      })
    ]
  }
}

配置 HTML 文件无缓存

确保 HTML 文件不被缓存,因为它是入口文件:

location = /index.html {
  expires -1;
  add_header Cache-Control "no-cache, no-store, must-revalidate";
}

使用版本号控制缓存

在项目发布时增加版本号,强制客户端获取新资源:

vue打包实现http缓存

// 在 main.js 中
const version = process.env.VERSION || '1.0.0'
localStorage.setItem('app_version', version)

// 检查版本更新
const oldVersion = localStorage.getItem('app_version')
if (oldVersion && oldVersion !== version) {
  caches.keys().then(cacheNames => {
    return Promise.all(
      cacheNames.map(cacheName => {
        return caches.delete(cacheName)
      })
    )
  })
}

配置 CDN 缓存

如果使用 CDN,需要配置合适的缓存规则:

  • 静态资源缓存时间设置为 1 年
  • HTML 文件设置为不缓存或短时间缓存
  • 启用自动刷新缓存功能

使用 ETag 验证

确保服务器配置了 ETag 或 Last-Modified 头,用于条件请求:

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
  etag on;
}

以上方法组合使用可以实现高效的 HTTP 缓存策略,同时确保用户总能获取到最新的应用版本。

标签: 缓存vue
分享给朋友:

相关文章

vue实现多级组件

vue实现多级组件

实现多级组件的基本结构 在Vue中实现多级组件通常涉及父子组件嵌套,通过props向下传递数据,通过$emit向上传递事件。多级组件的核心是递归或动态组件渲染。 <!-- 父组件 Parent…

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue实现jqueryui

vue实现jqueryui

Vue 实现 jQuery UI 功能 在 Vue 项目中实现类似 jQuery UI 的功能,可以通过原生 Vue 组件或第三方库来实现。以下是几种常见 jQuery UI 功能的 Vue 替代方案…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <templ…

vue实现监听

vue实现监听

监听数据变化 在Vue中,可以通过watch选项或$watch方法监听数据的变化。watch适用于组件选项内声明式监听,$watch适用于动态监听。 // 选项式API export default…

vue 实现拖拉

vue 实现拖拉

Vue 实现拖拽功能的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…