当前位置: 首页 > article >正文

前端开启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


http://www.kler.cn/a/153275.html

相关文章:

  • 如何使用 try-with-resources
  • 如何下载IEEE出版社的Journal/Conference/Magazine的LaTeX/Word模板
  • 深度解析 Dockerfile:构建可重复、可扩展的Docker镜像
  • 麒麟v10系统arm64架构openssh9.5p1安装
  • 现货白银简单介绍
  • PgSQL技术内幕 • statement_timeout做的那些事
  • Spring Boot 统⼀数据返回格式
  • 前端面试高频考点—事件循环Event loop
  • 『heqingchun-Ubuntu系统+x86架构+配置编译安装使用yolov5-6.0+带有TensorRT硬件加速+封装动态库+C++部署+Qt』
  • 登录/注册波形库账号(英国Pico汽车论坛账号)
  • 2023-12-01 AIGC-自动生成ppt的AI工具
  • C#多线程开发之----List Task有返回值
  • RPG项目01_场景及人物动画管理器
  • 【零基础入门Docker】Dockerfile中的USER指令以及dockerfile命令详解
  • C++ 传递指针给函数
  • 从PDF和图像中提取文本,以供大型语言模型使用
  • java开发之个微群聊自动添加好友
  • scrapy爬虫中间件和下载中间件的使用
  • git基本概念
  • 【概率统计】如何理解概率密度函数及核密度估计