zoukankan      html  css  js  c++  java
  • koa2静态资源缓存策略

    文章原文: https://www.cnblogs.com/yalong/p/15211975.html

    缓存对于前端性能优化来说有极大好处,这里总结下目前感觉还不错的缓存策略

    一. 静态资源启动gzip压缩

    这里不是在server端开启gzip, 而是在 webpack 打包的时候把静态资源进行gzip压缩,大大减轻了服务器压缩gzip的压力,大大减少传输时间
    具体可以参考这个: node.js koa2 如何使用gzip

    二.webapck打包使用contenthash

    webpack中对于输出文件名可以有三种hash值:

    1. hash
    2. chunkhash
    3. contenthash

    他们的差别简单来说就是

    1.hash

    每修改一个文件,所有文件的hash都会改变

    2.chunkhahs

    只要整个chunk 不曾修改,chunkhash 就不变, 但是chunk 里包含很多个文件,如果其中一个文件改变了,整个chunkhash 就改变了

    3.contenthash

    contenhahs 是针对每个文件,只要这个文件不变,contenthasn 就不变,不受其他文件影响

    所以webpack 打包的时候使用 contenhash, 就可以保证只有真正有修改的文件 对应的contenthash才改变,从而更好的适用下面的缓存策略

    关于 hash chunkhash conetenthash 更详细的区别可以看这里ebpack中hash、chunkhash、contenthash区别

    不理解 chunk 的可以看这个 Webpack 理解 Chunk

    三.koa-static 强缓存静态资源

    因为可以保证每次打包后的文件,只对真正修改的文件,产生不一样的contenhash,所以可以对全部静态资源使用强缓存
    以下代码是对../dist 目录下的静态资源设置 10 天的强缓存

    const staticCache = require('koa-static-cache');
    app.use(
      staticCache(path.join(__dirname, '..', 'dist'), {
        maxAge: 10 * 24 * 60 * 60,
      }),
    );
    

    对于没修改的文件,强缓存会生效,对于修改的文件,由于contenthash改变了 所以对应资源的路径也变了,所以就不走缓存了

  • 相关阅读:
    Hufman编码实现运用1 (原理不描述)
    E
    1178: [Apio2009]CONVENTION会议中心
    1071: [SCOI2007]组队
    #333. 【NOIP2017】宝藏
    CF 96 D. Volleyball
    CF 987 D. Fair
    qbxt的题:运
    qbxt的题:找一个三元环
    4361: isn
  • 原文地址:https://www.cnblogs.com/yalong/p/15211975.html
Copyright © 2011-2022 走看看