vue-cli项目优化gzip实践

news2024/11/16 7:31:03

背景:某天测试小妹气冲冲跑过来说你的网站首次打开平均16秒,慢得不行啊,空白时间太久,这样客户是不收货的,必须优化。谁叫我们是以测试驱动开发的,测试妹子的话等同与老板的命令。

空白是吧,我加loading菊花图不就不空白了?完美解决。

loading也太久了吧,还是16秒怎么办?

好家伙通过打包命令分析,第三方组件库都是全局引入导致js文件过大,访问慢。

找到问题了,把第三方组件库改为按需引入,虽然打包体积是下降了,但是公共js,css文件体积还是比较大?(关于打包分析优化感兴趣的可以出文章)

怎么办?代码已经没有办法再优化了?

这时候gzip映入眼帘。

你不知道啥是gzip压缩?总结一句话就是把项目打包后的代码进行压缩,压缩为gzip格式。。。总之就是减少很多很多体积。然后再配合nginx设置。gizp资源在用户浏览器解析,减少网络请求时静态资源的体积,从而加快访问速度。不懂的话去问问gpt

不废话直接看配置,分为两步

(一)vue项目配置

安装压缩插件,注意:不用安装太高版本,不用安装太高版本,不用安装太高版本,最新版本安装后打包回出错,我这是选择5.0.2。可能跟你项目的webpack版本有关吧

npm install --save-dev compression-webpack-plugin@5.0.2

vue.config.js配置如下

const CompressionWebpackPlugin = require('compression-webpack-plugin');
module.exports = {
//其他配置....
  configureWebpack: {
    plugins: [
      new CompressionWebpackPlugin({
        algorithm: 'gzip',
        test: /\.(js|css|svg|png|jpg)$/, // 匹配文件名
        deleteOriginalAssets: false, // 不删除源文件
        threshold: 10240, // 对超过10k的数据压缩
        minRatio: 0.8, // 压缩比
      }),
    ],
  }
}

运行打包之后就会发现dist目录有.gz文件生成,到这一步前端配置完成,但是要想生效,必须还得配置nginx。

(二)nginx配置

啥你兴冲冲跑去跟后端说帮我配置一下nginx gzip他叫你滚?前端仔地位就是这么低微。。。

我自己来搞。。。(不会的问gpt)

找到服务器nginx.conf文件

vim 打开该文件,找到http这个对象

添加以下配置

http {
    //其他配置......

    #开启gzip
    gzip  on;
    # 检查是否存在请求静态文件的gz结尾的文件,如果有则直接返回该gz文件内容,不存在则先压缩再返回
    gzip_static on;
    # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
    gzip_min_length 10k;
    # 进行压缩的文件类型
    gzip_types text/javascript application/javascript text/css;
    # 请求加个 vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩
    gzip_vary on;
    # 压缩等级,一般取中间值
    gzip_comp_level 6;
    #启用压缩缓冲
    gzip_buffers 16 8k;
    # 禁用IE 6 gzip
    gzip_disable "MSIE [1-6]\.";

   //其他配置......

}

保存,重启nginx。啥你不知道怎样重启?拔电源,不能访问后端就会管的了。

最后你自己对比一下啊访问速度吧,保证有惊喜。怎样区分是否生效了?

看浏览器文件请求的请求头包含字段 Accept-Encoding: gzip,响应头是否包含Content-Encoding: gzip

怎样区分访问资源时是nginx动态压缩的,还是你上传的gz资源?

Etag带有W/开头的就是nginx自己根据配置的条件动态压缩的,没有就是你上传的gz文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FindMy技术用于鼠标

鼠标是计算机的标准配置之一,其设计初衷是为了使计算机的操作更加简便快捷,减少用户在操作中的负担。用户可以通过移动鼠标,实现光标的精确移动,进而选择、拖拽、复制、粘贴等操作。这种操作方式,使得计算机的操作变得…

病急乱投医?大众「危机」

对于外资车企(以及合资品牌)来说,面对当下电动化、智能化市场白热化竞争的局面,显然有些「病急乱投医」的处境。 本周,大众汽车被曝出正在积极寻找合作伙伴,以帮助实现电动化转型的低成本目标,即…

【AIGC】金融号角吹响,现代技术引爆财富冲击波

在金融领域,创新力量的推动下,AIGC作为一位革命者崭露头角。其独特的理念和颠覆性的方法,将重新定义我们对健康的认知。它不仅改变了我们对金融的理解,更将引领我们走向一个全新的未来。AIGC的出现,无疑为金融界带来了…

Swagger 教程:从零开始学习Swagger

Swagger 是一个开源的 API 设计和文档工具,可以帮助全栈工程师更快、更简单地设计、构建、文档化和测试 RESTful API。本篇文章将为全栈工程师介绍 Swagger 的基础知识和使用方法,以及如何使用 Swagger 设计、文档化和测试 RESTful API。 一、Swagger 简…

03-SpringCloud-Ribbon负载均衡

Ribbon负载均衡 1.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 1.2.源码跟踪 为什么我们只输入…

关于执行 roslaunch xxxxx yyyy.launch 后,没能进入 RViz 就卡死的问题

Problem 话不多说,先看图。 终端也会提示有报错(可能是这种,但不确定): 这是发现问题所在之后,故意改错,然后尝试的。☝ Solution 总以为是显卡的问题,一直在研究怎么在 Ubuntu2…

pytorch04:网络模型创建

目录 一、模型创建过程1.1 以LeNet网络为例1.2 LeNet结构1.3 nn.Module 二、网络层容器(Containers)2.1 nn.Sequential2.1.1 常规方法实现2.1.2 OrderedDict方法实现 2.2 nn.ModuleList2.3 nn.ModuleDict2.4 三种容器构建总结 三、AlexNet网络构建 一、模型创建过程 1.1 以LeNe…

【力扣题解】P501-二叉搜索树中的众数-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P501-二叉搜索树中的众数-Java题解🌏题目描述💡题解&#x1f…

文本表示模型简介

文本是一类非常重要的非结构化数据,如何表示文本数据一直是机器学习领域的一个重要研究方向。那么有哪些文本表示模型?以及它们各有什么优缺点? 1. 常见的文本表示模型 1.1. 词袋模型和N-gram模型 最基础的文本表示模型是词袋模型。顾名思…

Java最新技术介绍和分析 (202305)

说明:本文完成了2023年5月份,当时最新的LTS版本是Java17,本文在撰写时参考了美团技术团队和阿里JDK团队相关的文章,以及本文也引了用文章中的图片。在此表示感谢! Java版本火车 相信老牌的Java开发者和爱好者把Java的…

计算机创新协会冬令营——暴力枚举题目01

首先是欢迎大家参加此次的冬令营,我们协会欢迎所有志同道合的同学们。话不多说,先来看看今天的题目吧。 题目 力扣题号:2351. 第一个出现两次的字母 注:下述题目和示例均来自力扣 题目 给你一个由小写英文字母组成的字符串 s &…

(ros2)控制gazebo移动的话题:

gazebo并不是ros2内自带的,是一个独立的软件,需要安装ros_gz功能被把ros2消息转换为gazebo可以识别的命令,并且把gazebo状态转换为ros2信息,所以可以认为ros_gz_bridge节点就是gazebo, 这个节点只接收2个话题&#xf…

Yarn的安装与使用详细介绍

什么是yarn Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用…

2024年天津仁爱学院专升本专业课考试考场安排及准考证打印的通知

天津仁爱学院2024年高职升本科专业课考试通知 一、考试科目及时间 天津仁爱学院2024年高职升本科专业课考试定于2024年1月9日9:00-14:00举行。考试地点:天津市静海区团泊新城博学苑,天津仁爱学院。具体考试科目时间安排如下表&a…

提高工作效率的Postman环境变量使用方法

在 Postman 中,用 Environments 来管理环境变量。我们在开发的过程中,往往会用到多个环境:开发环境,测试环境,UAT 环境,生产环境等。我们要调用不同环境的 API 时,只需切换 Postman 的 Environm…

ISP 基础知识积累

Amber:现有工作必要的技术补充,认识需要不断深入,这个文档后续还会增加内容进行完善。 镜头成像资料 ——干货满满,看懂了这四篇文章,下面的问题基本都能解答 看完思考 1、ISP 是什么,有什么作用&#xff…

php安装扩展event 提示 No package ‘openssl‘ found 解决方法

在使用pecl编译安装最新版event模块的时候提示 No package openssl found , 可是本机是安装了openssl的, 编译时找不到, 大概率就是环境配置的问题了, 增加 OPENSSL_CFLAGS OPENSSL_LIBS环境变量即可解决. 异常提示信息: checking for openssl > 1.0.2... no configure: …

【数据库原理】(5)关系数据库的关系数据结构

关系及相关概念 在关系模型中,无论是实体还是实体之间的联系均由关系(二维表)来表示。 1.域(Domain) 定义:域是一组具有相同数据类型的值的集合。例子:实数集合、整数集合、英文字母集合等。 2.笛卡儿积(Cartesian…

学习Vue单文件组件总结

今天主要学习了组件实例对象的一个重要内置关系和单文件组件。先说一下实例对象的内置关系,在这里要对JS中的原型链有一定的基础,Vue构造函数的prototype原型指向的是Vue的原型对象,new出来的Vue实例对__proto__同样指向的是Vue的原型对象&am…

Hex 文件类型字段详解

文章目录 地址类型字段详解02(扩展段地址记录):指定后续数据记录的向左移动4位后开始计算地址04(扩展线性地址记录):指定后续数据记录的起始地址的高16位 地址类型字段详解 02(扩展段地址记录&…