当前位置:首页 > 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 实现更精细的缓存控制:

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";
}

使用版本号控制缓存

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

// 在 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 头,用于条件请求:

vue打包实现http缓存

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

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

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

相关文章

vue实现sql操作

vue实现sql操作

在Vue中实现SQL操作通常需要结合后端服务或本地数据库技术,因为前端JavaScript无法直接连接SQL数据库。以下是几种常见的实现方式: 通过API与后端交互 Vue前端通过HTTP请求(如a…

vue实现https

vue实现https

Vue 中实现 HTTPS 的步骤 在 Vue 项目中实现 HTTPS 主要涉及开发环境配置和生产环境部署。以下是具体方法: 开发环境配置(Vue CLI 或 Vite) 使用 mkcert 生成…

vue实现tag

vue实现tag

Vue 实现标签(Tag)功能 在 Vue 中实现标签(Tag)功能可以通过多种方式完成,以下是一些常见的方法和实现步骤: 使用动态组件和 v-for 通过 v-for 指令动态渲染标签列表,结合样…

vue 实现href

vue 实现href

Vue 实现 href 的方法 在 Vue 中实现 href 功能可以通过多种方式,具体取决于需求场景。以下是几种常见的方法: 使用 <a> 标签 直接使用 HTML 的 <a&g…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <li…

vue实现radio

vue实现radio

Vue 实现 Radio 按钮 在 Vue 中实现 Radio 按钮可以通过 v-model 进行数据绑定,结合 input 元素的 type="radio" 属性。以下是一个基本示例: <t…