前端开启gzip优化页面加载速度

生成gizp的打包资源,可以优化页面加载速度

打包的时候开启gzip可以很大程度减少包的大小,页面大小可以变为原来的30%甚至更小,非常适合线上部署, 但还记得需要服务端支持

1、前端配置compression-webpack-plugin

先安装:npm install compression-webpack-plugin
安装的版本需要注意,根据自己的webpack版本来定,尽量匹配

01、vue.config.js 在vuecli中

/* 第一种方式 */
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const plugins = [...]
if (isProduction) {
   
    plugins.push(
        new CompressionWebpackPlugin({
   
            filename: '[path].gz[query]',
            algorithm: 'gzip',
            test: new RegExp('\.(' + ['html', 'js', 'css'].join('|') + ')$'),
            threshold: 10240, // 只有大小大于该值的资源会被处理 10240
            minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
            deleteOriginalAssets: false // 删除原文件
        })
    )
}
module.exports = {
   
 configureWebpack: {
   
        resolve: {
   
            alias: {
   
                '@': resolve('./src')
            }
        },
        plugins
    },
}
 

02、 在vuecli中,configureWebpack 返回函数式写法

/* 第二种方式 */
// configureWebpack 返回函数式写法
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const isProduction = process.env.NODE_ENV !== 'development'
module.exports = {
   
...
configureWebpack: (config) => {
   
        config.plugins.push(
            new HardSourcePlugin()
        )
        // 其他配置
        Object.assign(config.resolve, {
   
            alias: {
   
                '@': resolve('./src')
            }
        })
        // 为生产环境修改配置
        if (isProduction) {
   
            config.plugins.push(
                new CompressionWebpackPlugin({
   
                    filename: '[path].gz[query]',
                    algorithm: 'gzip',
                    test: new RegExp('\.(' + ['html', 'js', 'css'].join('|') + ')$'),
                    threshold: 10240, // 只有大小大于该值的资源会被处理 10240
                    minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
                    deleteOriginalAssets: false // 删除原文件
                })
            )
        }
    },
 
}
 
// webpack.config.js  在webpack搭建的项目中
const CompressionWebpackPlugin = require('compression-webpack-plugin')
module.exports = {
   
   mode: 'development',
   ...
   plugins: [
     new CompressionWebpackPlugin({
   
                    filename: '[path].gz[query]',
                    algorithm: 'gzip',
                    test: new RegExp('\.(' + ['html', 'js', 'css'].join('|') + ')$'),
                    threshold: 10240, // 只有大小大于该值的资源会被处理 10240
                    minRatio: 0.8, // 只有压缩率小于这个值的资源才会被处理
                    deleteOriginalAssets: false // 删除原文件
                })
   ]

2、服务端配置, 以nginx为例

服务端 Nginx 需开启 gzip_static 功能;
在nginx.conf的server模块中加入以下代码:

server{
   
    //开启和关闭gzip模式
  gzip on;
  //gizp压缩起点,文件大于2k才进行压缩;设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。 默认值是0,不管页面多大都压缩。建议设置成大于2k的字节数,小于2k可能会越压越大。
  gzip_min_length 2k;
  // 设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区 
  gzip_buffers 4 16k;
  // 设置gzip压缩针对的HTTP协议版本
  gzip_http_version 1.0;
  // gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
  gzip_comp_level 2;
  //进行压缩的文件类型
  gzip_types text/plain application/javascript text/css application/xml;
  // 是否在http header中添加Vary: Accept-Encoding,建议开启
  gzip_vary on;
}

以上
对于支持gzip的浏览器, 配置成功后请求头中会包含: Accept-Encoding: gzip, deflate
服务器响应时 在响应头中显示: Content-Encoding: gzip

相关推荐

  1. 前端开启gzip优化页面速度

    2023-12-05 17:40:04       57 阅读
  2. 如何使用PHP开发缓存优化图片速度

    2023-12-05 17:40:04       52 阅读
  3. 如何在前端优化中减少页面时间?

    2023-12-05 17:40:04       53 阅读
  4. vue单页面应用(SPA)的首屏速度优化

    2023-12-05 17:40:04       37 阅读
  5. 优化Vue首页速度的实用方法

    2023-12-05 17:40:04       76 阅读
  6. 优化Vue首页速度的实用方法

    2023-12-05 17:40:04       57 阅读
  7. vue如何优化首页速度

    2023-12-05 17:40:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-05 17:40:04       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-05 17:40:04       97 阅读
  3. 在Django里面运行非项目文件

    2023-12-05 17:40:04       78 阅读
  4. Python语言-面向对象

    2023-12-05 17:40:04       88 阅读

热门阅读

  1. 前端学习笔记

    2023-12-05 17:40:04       57 阅读
  2. MacBook续命,XCode硬盘占用问题

    2023-12-05 17:40:04       61 阅读
  3. base64转PDF

    2023-12-05 17:40:04       55 阅读
  4. Flutter, pub 无法安装依赖 等问题

    2023-12-05 17:40:04       58 阅读
  5. Redis 集群搭建 哨兵模式搭建

    2023-12-05 17:40:04       55 阅读
  6. netstat

    netstat

    2023-12-05 17:40:04      55 阅读
  7. JVM的知识点

    2023-12-05 17:40:04       56 阅读
  8. rabbitmq安装脚本(本地包安装)

    2023-12-05 17:40:04       56 阅读
  9. Python文件读写与函数的基础知识点

    2023-12-05 17:40:04       59 阅读