前端性能优化-gzip压缩
提纲:
- GZIP是什么
- 如何启用gzip
- 什么时候应该启用gzip
1、gzip压缩是什么#
gzip
是一种文件压缩格式,它可以将文件压缩为较小的大小,以便更快地在网络上传输或存储在磁盘上。gzip
压缩算法适用于文本类型的数据,通常用于压缩Web服务器上的静态资源文件,例如HTML,CSS,JavaScript文件和其他文本文件。当客户端请求这些文件时,Web服务器会将它们压缩为gzip格式并将其发送到客户端,这可以显著提高网站的加载速度和性能。gzip
压缩是一种有损压缩,这意味着压缩后的文件可能会损失一些细节和精度,但通常不会对文件的实用性造成太大影响。
注:gzip压缩不适宜用于图片等资源,因为图片通常本身已经采用压缩算法了,采用gzip压缩可能反而会使得图片大小更大。
2、在项目中如何使用gzip压缩#
2.1 浏览器#
首先想要使用gzip,需要浏览器支持。目前大多数的浏览器都支持gzip,在浏览器向服务器请求资源时,在http请求头Accept-Encoding
属性表示浏览器支持的格式,这样服务器在接收到请求后,就可以知道浏览器是否支持gzip
压缩了。
2.2 服务器#
常用的web服务器如nginx、linux等都支持gzip压缩。
tomcat#
找到tomcat的server.xml文件,找到其中Connector节点然后进行配置修改,示例如下:
<Connectorport="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
maxPostSize="0"
useBodyEncodingForURI="true"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,image/jpeg,application/json"/>
具体参数说明:
- compression="on" 打开压缩功能
- compressionMinSize="2048" 启用压缩的输出内容大小,当被压缩对象的大小>=该值时才会被压缩,这里面默认为2KB
- noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩
- compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 压缩类型
nginx#
Nginx 默认是不开启 gzip 的,开启gzip的示例如下:
http {
# 开启 gzip 压缩
gzip on;
# 使用 gzip 压缩的文件类型
# 此外,text/html 是自带的,不用写上
gzip_types text/plain text/css application/javascript application/json text/xml applica tion/xml application/xml+rss;
# 小于 256 字节的不压缩
# 这是因为压缩是需要时间的,太小的话压缩收益不大
gzip_min_length 256;
# 开启静态压缩
# 压缩的资源会被缓存下来,下次请求时就直接使用缓存
gzip_static on;
}
3、应该什么时候都使用gzip压缩吗?#
虽然启用gzip
压缩可以减少网络传输量,提高页面加载速度。但gzip压缩也会对服务器和客户端带来一些压力(服务器需要压缩,客户端需要解压)。
但对于以下情况,使用gzip压缩可能会导致一些性能问题
- 客户端使用非常老旧或性能较差的计算机上
- 对于大量非常小的文件使用gzip可能会给服务器带来一些压力
总的来说,在现代浏览器和计算机上,使用gzip
压缩通常是一种非常有效的优化方式。
参考:#
- ChatGPT
作者:Nicander
出处:https://www.cnblogs.com/Nicander/p/17299262.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具