如何使用 GZIP 来优化你的网站

基于STM32的智能衣柜系统开发实战(附完整源码与硬件设计) 本文详细介绍了基于STM32的智能衣柜系统开发实战,包括硬件设计、软件架构和云端功能实现。系统具备实时温湿度监控、自动加热除湿、紫外线杀菌等核心功能,通过STM32F103C8T6主控芯片和ESP8266无线模块实现智能控制。附完整源码与硬件设计,适合科技爱好者和开发者参考。 阅读详情

如果你想节省带宽提高网站速度,压缩是一种简单有效的方法。当我打算提高 JavaScript 的传输速率来开启 GZIP 压缩的时候,因为有旧版本浏览器的存在(IE6)我犹豫了。

然而在二十一世纪,我们大部分的流量来自于浏览器,坦白的讲,大部分的用户都是很懂技术的。我们不想让任何一个人在访问网站的时候遇到卡顿,哪怕是他在用 IE4.0 和 Windows 95。

谷歌和雅虎都开启了 GZIP 压缩。一个现代的浏览器要想不仅享受到现代网络信息还要享受到现代互联网的速度,就必须开启 GZIP 压缩。接下来将介绍如何使用 GZIP。

我们为什么要开启 GZIP 压缩

在此之前,我有必要解释一下什么是编码。

当你在互联网上想请求一个文件,比如 yahoo.com/index.html ,你的浏览器会和服务器有一个会话,大概如下图所示:


v2-7f8291d2cfc178dc7ecc29e380d96a78_b.png


  1. 浏览器:嘿,给我来一个 index.html 文件。
  2. 服务器:好的,让我去找找它是不是在~
  3. 服务器:找到它了,我会返回一个成功的状态码(200 ok),我正在发送文件……
  4. 浏览器:100KB? 我滴天……等啊……等啊,好的,下载下来了。

当然,实际的请求头和协议会更加正规一点。

但是,它生效了,我拿到了 index.html 文件。


现在问题在哪呢?

好吧,这系统是正常的,但是太低效了,坦白讲 100KB 是一大段的文字,HTML 是冗余的,每一个 <html>,<table> 和 <div>都有一个几乎相同的闭合标签。虽然通篇文字都有重复,但是只要你砍掉任何的内容,HTML(以及它的同胞 XML)都不会正常显示。

当文件太大的时候有什么好办法呢,就是 GZIP 压缩它。

如果我们传输一个替代原始大文件的 ZIP 的压缩文件给浏览器,就会节省带宽和下载时间。

当浏览器可以下载 ZIP 文件,解压,并且渲染给用户,下载很快,页面加载也很快,用户心情就会很好。

这个浏览器–服务器的会话大概是这样的:


v2-677b7b07de6127be858e904f9bf9cb70_b.png


  1. 浏览器:嘿,给我来一个 index.html,如果可以,给我来一个压缩版的。
  2. 服务器:容我找找……好,满足你,如果找到了给你压缩以下,GZIP 格式的哦。
  3. 服务器:Yep,找到了,正在压缩,马上传给你。
  4. 浏览器:太棒了,只有 10KB,我来解压,并且渲染给用户。

情况很简单:文件越小,下载更快,用户感受更好。

雅虎主页的 HTML 部分通过压缩从 101KB 直接压到了 15KB:


v2-145020bb3a669f46bf9d228b47b77bad_b.png


残(淡)酷(定)的现实

变化的部分在于浏览器和服务器,它成功的发送过去一个压缩文件。对于 GZIP 压缩的要点有两点:

  • 浏览器发送一个请求头,告诉服务器接受压缩版本的文件(GZIP 和 Deflate 是两种压缩算法)Accept-Encoding: GZIP, Deflate
  • 如果文件压缩了,服务器返回一个头信息:Content-Encoding: GZIP

如果服务器没有返回 Content-Encoding 的头信息,意味着这文件是没压缩的(浏览器可以直接解析的)。请求头 Accept-Encoding 只是浏览器的一个请求,而不是命令。如果服务器不返回压缩文件,浏览器就不得不处理那庞大的源文件。


服务器设置

“好消息”是我们没办法控制浏览器,他发 “Accept-encoding: GZIP, Deflat” 或者不发,请求头就在那里,不增不减。

我们需要做的只是给服务器配置,让它返回压缩版本,如果浏览器控制,我们可以为每一个人节省带宽。

对于 IIS 服务器,启动压缩在 “设置” 里。

如果你像我一样用 NodeJS 来搭建服务器,那你中奖了,NodeJS 开启 GZIP 非常的简单,只需增加两行代码就可以搞定:

const express = require('express');
const app = express();
 
//express框架,前边肯定都是必要的,也就是只需安装compression组件,然后添加一下两句代码就好
const compression = require('compression');
app.use(compression());
 

对于 Apache 服务器,我们启动压缩输出也很简单直接。在你的 .htaccess 文件里增加如下代码:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
 
# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>

Apache 服务器有两个压缩选择:

  • mod_deflate 更简单设置更加标准。
  • mod_gzip 看起来更加强大,可以预预缩文件。

Deflate 更快,所以我选择它;当然如果想更爽,用 mod_gzip。

无论你选那种,Apache 都会检查浏览器是否发送 “Accept-encoding” 请求头来判断是返回压缩文件还是源文件。然而,一些旧版本浏览器会带来麻烦,需要一些特别的指令来纠正它。

如果你不能改你的 .htaccess 文件,可以用 PHP 来返回压缩的内容,给你的 HTML 文件一个 .php 文件,把下边文件加在文件的最上边。

IN PHP :

v2-6329e1749da9def870b5e7dfcfee3117_b.png


我们会检查 “Accept-encoding” 头,返回 GZIP 压缩版本的文件(不然就返回源文件)。这简直像是在建设你自己的 Web 服务器。

如果你确实在搭建服务器,请用 Apache 来压缩你的文件。


验证压缩的效果

一旦你配置好了你的服务器,检查它是不是生效了:

  • 在线查看:用 online gzip test 来检查你的网页是不是确实压缩了。
  • 浏览器查看:在 Chrome 谷歌浏览器,F12 打开开发者工具–> network 页签(火狐和 IE 浏览器也是相似的)。刷新你的页面,点击这 network 航信息来查看。“Content-encoding: gzip” 的头信息意味着内容是压缩了传过来的。


v2-07d636ca82448afc45d058e51a2d22ba_b.png

点击 “use large rows” 表情来查看更多信息,包含了压缩以后的大小和源文件的大小:

v2-9034393baf59ce0707abeeea44324048_b.png

奇迹般的,主页从 187KB 压缩到了 59KB。


试试几个小例子

我做了个几个页面和一个下载 Demo:

  • index.html —— 默认压缩
  • index.htm —— 通过在 Apache 上的 .htaccess 文件 增加 * .htm 规则来压缩
  • index.php —— 通过 PHP 的头信息来压缩

随意下载这些文件,放到你的服务器,调整你的服务器设置。


警告

GZIP 压缩的出现如此的令人振奋,但是还有以下三个注意点:

  • 低版本浏览器:一些浏览器接受压缩文件还是有问题(他们说他们可以但是他们并不行),如果你的站点必须在 Windows 95 的网景 1.0 浏览器上,你可能不想要压缩文件。Apache mod_deflate 设置了一些忽略规则来专门为旧浏览器。
  • 已经压缩过的文件:大多数的图片,音乐和视频都已经压缩过了,不要浪费时间来压缩他们了。事实上,你可以只压缩那三巨头(HTML,CSS AND JAVARSCRIPT)。
  • CPU 负载:在传输过程中压缩文件耗费 CPU 但是节省带宽(用空间换时间)。通常压缩速率的选择需要权衡利弊。也存在一些预压缩静态文件的方法,但这要求更多的资源。考虑了 CPU 的耗费,压缩文件也是利大于弊。通过压缩实现更好的用户体验,更短的留白时间。

开启 GZIP 压缩是优化网站最快的方法之一。大胆的用吧,它让你的用户体验更棒。


本文译者:李伟民

原文链接:betterexplained.com/art


文章看完啦,不如来官网看看?滴滴云3-5折活动聚惠来袭!

与其看教程,不如实际操作下?

滴滴云-为开发者而生

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码) vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu 阅读详情

相关推荐

Eplan P8 API二次开发--插入符号(Symbol)功能(Function)并定义属性

1、目的 使用Eplan API在页中自动插入某个符号并按约定规则自动设置好属性 2. 步骤 一、基础信息 比如要在Eplan中自动插入一个电机的符号并定制属性,我们先要确定要插入的符号名,可以在Eplan中获取如下符号(Symbol)信息 可以知道我们待插入的符号名称为M3_1, 接下来,使用Visual Studio建立类库项目,并引用Eplan Api库 二、获取符号变量(SymbolVariant) 在Eplan中,当一个符号(Symbol)被插入到页中,这个符号的引用即变为一个(Function

如是道程序人生 4524

如何用gzip进行前端性能优化?

一、简介 HTTP 可以对传输的内容进行压缩,减少网络实际传输数据的大小。原理就是 服务器对文件进行 gzip 压缩后,再进行传输,浏览器收到资源后再解压的过程。 对于 js、text、json、css 这种纯文本进行压缩,效果特别好,不用改变代码即可提升网站响应速度; 压缩过程是需要花费 CPU 资源的,对大文件(图片、音乐等)进行压缩,不仅不能提升网站响应速度,还会增加服务器压力,让网站有明显的卡顿感。 二、nginx 开启 gzip 服务器使用 nginx,浏览器使用 chrome,开启 gzi

Learn-anything.cn 669

macOS安装Cplex+yalmip

macOS安装Cplex+yalmip

DS 4248

Nginx优化之gzip压缩提升网站速度

gzip配置的常用参数gzip on|off;  #是否开启gzipgzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)gzip_disable #正则匹配UA 什么样的Uri不进行gzipgzip_min_length 200 # 开始压缩的最小长...

鲁花花生油 1万+

Laravel 结合 jwt-auth 实现无状态 API 认证(实战解析)

本文详细解析了如何在Laravel框架中结合jwt-auth实现无状态API认证,包括JWT的优势、环境搭建、Token签发与刷新、API路由保护等实战内容。通过具体代码示例和优化技巧,帮助开发者高效解决跨域认证问题,提升系统安全性。

weixin_29315569的博客 210

GD32模拟IIC读写DVC1124

GD32模拟IIC读写集澈AFE芯片DVC1124

ponyma_的博客 1226

网站优化中GZIP压缩

大家做网站优化的时候,可能最多的时候都考虑的是站内优化和外链,今天主要来讲些GZIP压缩是否对网站优化存在影响。 GZIP压缩:准确的来说是服务器性能的优化,当然我认为GZIP也可以算是站内优化的一部分。 什么是GZIP(百科):HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中...

chao50505的博客 210

华为OD机试 - 矩形绘制 - 数组、坐标偏移(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除。 当新绘制的矩形与已有图形重叠时,对图形取并集; 当新擦除的矩形与已有图形重叠时,对图形取差集。 给定一系列绘制和擦除操作,计算最终图形的面积。第一行为操作数N,接下来的N行格式为:d x1

学Java,找哪吒 835

如何通过GZIP来优化你的网站

gzip压缩是怎么回事;如何通过gzip来开启压缩。

咕咕鸡的博客 2万+

RuoYi-Cloud-Plus使用minio进行文件上传图片后无法预览解决_修改minio配置minio桶权限---SpringCloud工作笔记198

在文件管理的位置,发现刚刚上传的图片文件,会显示 预览图片失败 后来经过多方查看,发现是minio的配置的问题。可以看到首先登录RuoYi-Cloud-Plus系统然后,打开文件管理页面可以看到,当上传了图片文件以后。登录以后,选中左侧Buckets,可以看到有自己用的桶,找到以后点击打开。显示文件展示中,文件预览失败,那么这个时候,去修改minio的配置。可以看到,点击配置管理,这里我们启用的是minio对吧。默认是没有配置的这个时候,是允许下载,但不允许预览的.

添柴程序猿的专栏 5567

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1895

网站性能优化实战之—— gzip (webpack, vite 开启gzip 部署)

这些天个人博客网站终于写好了,使用的技术是react17 + vite + redux + saga + ts等,后台使用的是 node + koa + mysql + ts , 前台地址是: http://blogs.chenliangliang.top/ 前端代码地址: https://github.com/cll123456/blog 服务端代码地址: https://github.com/cll123456/my-blog-serve 问题描述 项目是写好了,但是我的首页加载出来竟然要20多s.

twinkle的博客 8119

老 MacBook 部署 OpenClaw:比 Windows 更稳定

老款 MacBook 在运行 OpenClaw 时,Linux 系统相比 Windows 系统具有更好的稳定性和性能。本文将从多个维度对比 Linux 和 Windows 在老款 MacBook 上运行 OpenClaw 的表现,帮助您选择更合适的操作系统。

一键难忘的博客 2096

终极指南:如何用Nginx Gzip压缩实现网站性能优化

在当今快速发展的互联网时代,网站加载速度直接影响用户体验和搜索引擎排名。Nginx作为一款高性能的Web服务器,其内置的Gzip压缩功能是提升网站性能的关键手段之一。本指南将详细介绍如何通过Nginx的Gzip压缩功能,显著减少网页加载时间,提升用户体验。 ## 什么是Nginx Gzip压缩? Gzip是一种流行的文件压缩算法,能够有效减小HTML、CSS、JavaScript等文本文件的大

gitblog_00195的博客 1164

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Nginx配置-启用gzip压缩,优化网站访问速度

【代码】Nginx配置-启用gzip压缩,优化网站访问速度。

chenthe1的专栏 4399

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

优化网站响应时间tomcat添加gzip

优化网站响应时间tomcat添加gzip tomcat版本要求:5.0+ step 1:找到你的${tomcat}/conf/server.xml   注:${tomcat}代表你的tomcat安装路径 step 2:打开文件,添加以下红线圈住选项: 以上代码解释: [plain] view plaincopy compres

梦想起飞的地方......... 722

tomcat优化之启用gzip网页压缩加快网站访问速度

现在随着搜索引擎的升级,现在更加注重网站用户体验。对于广大站长朋友来说网站的速度甚至比内容还要重要。因为如果客户访问你的网站一直打不开,就算网站的内容很优秀,相信没有多少人会耐心地等待。所以提高网站访问速度是非常必要和重要的。今天笔者就跟大家分享一下如何开启Tomcat服务器的Gzip网页压缩功能,来提高网站访问速度。 首先,介绍一下Gzip压缩技术以及优势    所谓GZIP压缩技术最早由J

浮生飘血的专栏 1052

ASP.NET MVC 网站优化总结 使用 Gzip 压缩

1.开GZIP有什么好处? 答:Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度。  2.如何启用IIS的Gzip压缩功能: 答: 首先,如果你需要压缩静态文件(HTML),需要在硬盘上建一个目录,并给它“IUSR_机器名”这个用户的写权限。如果压缩动态文件 (PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成

飞鸟的博客 3730

Apache启用GZIP压缩优化网站(GZIP、网站优化)

先来了解一下GZIP,gzip 是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4。 gzip可以级大的加速网站.有时压缩比率高到80%,近来测试了一下,最少都有40%以上,还是相当不错的.在Apa...

dodomail的专栏 258

网站优化-Gzip压缩

  新版站点开发完成了,最后一版的测试报告完成后,正式通知了董事长.   第二天早上刚打开POPO,部门经理就发消息过来,说页面太大了,需要优化. 董事长通过fiddler看到里面包含了太多的Ajaxpro生成ashx文件,还有一个50几K的jquery文件.需要压缩.   之前就听高手朋友说,GZIP是个好东东,在网上搜索了一些资料,实现了一把,果然,55K的jquery.min.js在f...

weixin_33751566的博客 73

IIS或Apache启用GZIP压缩优化网站

先来了解一下GZIP,gzip 是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4。gzip可以级大的加速网站.有时压缩比率高到80%,近来测试了一下,最少都有40%以上,还是相当不错的.在Apache2...

weixin_30247781的博客 184

网站优化之设置tomcat7开启Gzip压缩

测试效果明显。 文章来源: http://www.dianfusoft.com/showDetail.action?articleId=130305234111 今日突然心血来潮用百度站长工具检测自己的网站质量怎么样,蓦然发现网站有很多需要改进的地方。也许以前做网站只注重结果而忽略了细节,做了网站后才发现有这么多技术外的学问,其中一个就是SEO! 今晚探索的就是将服

echo3的专栏 5217

Easyui 页面访问慢解决方案,GZIP网站压缩加速优化

Easyui 页面访问慢解决方案,GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量。

JEECG官方博客 9738

nginxs使用gzip 优化网站加载速度

配置示例代码(https配置同下) gzip on; gzip_buffers 32 4K; gzip_comp_level 6; gzip_min_length 100; gzip_types application/javascript text/css text/xml; gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持) gzip_vary on; 配置示例截图(https配置同下) 概念–什么是

成茂峰 363

IIS或Apache服务器怎样启用GZIP压缩优化网站

先来了解一下GZIP,gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式。软件的作者是Jean-loupGailly和Mark Adler。1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4。 gzip可以级大的加速网站.有时压缩比率高到80%,近来测试了一下,最少都有40%以上,还...

weixin_34291004的博客 126
上一篇: Redis 持久化使用初探
下一篇: 基于 Node.js 的 GitBook 使用入门
「已注销」
博客等级 码龄6年 395粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值