no-cache 配置

no-cache 配置

  • no-cache: 不是禁用缓存,是验证是否缓存的意思。(不严谨的理解)

在 index.html 中进行配置

  • 只是影响浏览器对该 html 文件本身的存储行为:这些标签会告诉浏览器不要缓存 index.html 文件。
  • 确保每次加载页面时都会获取最新的版本
  • 仅影响 index.html 文件本身的缓存,而不会影响页面中引用的其他资源(如 CSS、JavaScript 等)的缓存行为。
  • 对于其他资源的缓存控制通常需要在服务器响应头中进行设置。
  • 【注意】:缓存对象是 HTML 文件本身。
  • 【注意】:禁止缓存 html 文件,nginx 服务端还需要进行设置:不让缓存 index.html
<!--  1.html头部设置 -->
<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" />
  • 2.nginx 配置不缓存 index.html 文件如下
// 2.不缓存index.html文件
  location = /index.html {
    add_header Cache-Control "no-cache, no-store";
  }
  • 3.js 文件配置 chunckhash、css 文件配置 contentHash
    文件名哈希值变化,则会被看做新的静态资源。需要在 webpack 的输出文件分别配置不同的哈希。

在 axios 请求头中设置 no-cache

  • 这是一种客户端控制缓存的方式,浏览器会发出不带缓存头的请求,但服务器仍然可以决定是否遵循请求中的这个要求。

  • 这仅影响特定请求,而不会影响服务器上其他资源的缓存策略。

  • 这个设置影响 Axios 发送的 HTTP 请求,告诉服务器不要使用缓存的响应数据。
    这在请求特定资源时很有用,确保每次请求都能获取到最新的数据,而不是使用缓存的响应。

  • 【注意】: 操作对象是控制请求的缓存。

  • 哪些特定的请求需要设置?

axios({
  method: "get", // 或其他请求方法
  url: "你的请求URL",
  headers: {
    "Cache-Control": "no-cache", // 设置Cache-Control为no-cache
    // 其他请求头...
  },
});

服务端 nginx 设置 no-cache

  • 这个设置影响 Nginx 服务器对所有资源的缓存策略,包括 HTML、CSS、JavaScript、图像等等。
  • 通过在 Nginx 配置中设置缓存控制头,服务器可以指示客户端是否缓存响应以及缓存的时间。
  • 这通常用于生产环境,以提高性能和减少服务器负载,但需要正确配置以确保不会导致问题,如过期的缓存。
    【注意】: 操作对象是服务器上所有资源的缓存策略。
  • 服务端全局配至爱缓存
    // 3.服务端配置no-cache
    location = /xx(xx为你的代理的项目名) {
      add_header Cache-Control "no-cache, no-store";
    }
    // 如果nginx上有 proxy_cache 的配置,也考虑删掉,这是nginx的服务器缓存??
    

总结

上面设置虽然都是 no-cache,但是他们的缓存对象和缓存作用是不同的。

hash、chunkhash、contenthash - webpack 上的三种哈希配置

  • 服务器上的静态资源在打包的时候一般会设置哈希值,哈希值跟内容相关。

hash

  • 所有文件的哈希值都相同,一个文件改变了,所有文件的哈希值都会改变。无缓存作用。

chunkhash

  • js 设置 chunkhash 的作用:A.js 文件的修改不影响 B.js 文件的哈希值;

contenthash

  • js 引用 css 文件,修改 js 文件不会影响 css 文件的哈希值。但是修改 css 文件两种的哈希值都会变化。
module.exports = {
  mode: "production",
  entry: {
    index: "./src/index.js",
    chunk1: "./src/chunk1.js",
  },
  output: {
    filename: "[name].[chunkhash].js",
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader, "css-loader"],
      },
    ],
  },
  plugins: [
    // 提取css插件
    new MiniCssExtractPlugin({
      filename: "[name].[contenthash].css",
    }),
  ],
};
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值