如何在 apache 中开启 gzip 压缩服务
服务器设置 gzip 压缩是 web 开发里很普遍的做法。假设你要请求一个 100k 的文件,网络传输速度为 50k/s,需要 2s 才能得到数据,但是如果在服务器设置了 gzip 压缩,将服务端的文件压缩到了 50k(实际上的压缩率往往小于 50%),这时候只需 1s 就能得到数据,然后在客户端解压即可。
可以对比下同一个文件在开启 gzip 前后的大小。
gzip 压缩前:

gzip 压缩后:

那么如何在服务端开启 gzip 服务呢?这里以 apache 为例简单介绍下。
打开 apache 的 "httpd.conf" 文件,比如我的是在 "C:\wamp\bin\apache\Apache2.2.21\conf" 目录下。找到以下这一行,将它前面的注释(#)去掉:
LoadModule deflate_module modules/mod_deflate.so
很多参考文件都提到同时要对 LoadModule headers_module modules/mod_headers.so 去掉注释,说 "如果不开启这个,那网站就不能正常显示了" ,不过我在测试过程中没有去掉也没有问题。
接着再添上以下代码:
<IfModule mod_deflate.c>
# 告诉 apache 对传输到浏览器的内容进行压缩
SetOutputFilter DEFLATE
# 压缩等级 9
DeflateCompressionLevel 9
</IfModule>
这样就能对所有文件进行 gzip 压缩了。压缩等级是个 1-9 之间的整数,取值范围在 1(最低) 到 9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源。(本地测试了下 1 和 9 压缩率差不了多少...)
实际开发中我们并不需要对所有文件进行压缩,比如我们无需对图片文件进行 gzip 压缩,因为图片文件(一般为 jpg、png等格式)本身已经压缩过了,再进行 gzip 压缩可能会适得其反(详见 图片要启用gzip压缩吗?绝对不要!,背景图片千万不要gzip压缩,尤其是PNG),类似的还有 PDF 以及音乐文件。所以我们可以设置过滤指定文件或者对指定文件进行压缩。
比如我们要对图片等特殊文件不进行 gzip 压缩处理:
<IfModule mod_deflate.c>
# 告诉 apache 对传输到浏览器的内容进行压缩
SetOutputFilter DEFLATE
# 压缩等级 9
DeflateCompressionLevel 9
#设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
或者指定文件格式进行压缩:
<IfModule mod_deflate.c>
# 压缩等级 9
DeflateCompressionLevel 9
# 压缩类型 html、xml、php、css、js
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
</IfModule>
修改好后,保存 httpd.conf 文件,记得重启 apache,再刷新浏览器看请求,应该已经生效了!
如何在 apache 中开启 gzip 压缩服务的更多相关文章
- 修改Apache配置文件开启gzip压缩传输
转自:http://down.chinaz.com/server/201202/1645_1.htm 最近无事研究一些Web的优化,用工具page speed检测网站时发现还没有开启gzip压缩,于是 ...
- Apache中的gzip压缩作用及配置
gzip会对文本资源进行压缩,一般能节省40%的大小,二进制内容不需要开启Gzip压缩,因为这些文件是已经压缩过的,如果再进行gzip压缩可能反而会增加其大小,并且空耗cpu资源啊. 静态资源一般都会 ...
- PHP中开启gzip压缩的2种方法
网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验. php配置改法: 复制代码代码如下: zlib.output_compression ...
- Tomcat7中开启gzip压缩功能的配置方法
使用gzip压缩可以减少数据传输大小,加快网页加载速度.很多大站都开启了gzip压缩,不过也有很多网站并没有开启gzip压缩,上次看了一篇文章说开启gzip压缩后对搜索引擎不友好,但从带宽和流量的角度 ...
- 【转】apache/php 开启 gzip压缩
1.php方式开启 原理: header("Content-Encoding: gzip"); echo gzencode('songjiankang'); 示例1: functi ...
- apache/php 开启 gzip压缩
1.php方式开启 原理: header("Content-Encoding: gzip"); echo gzencode('songjiankang'); 示例1: functi ...
- Apache服务器开启gzip压缩的支持
为什么要在服务器上开启压缩?其实,服务器上开启压缩,对整个网站的就是在服务器上把网页的内容压缩后传给客户端,客户端解压后再显示网页的内容.实际就是增加了服务器端和客户端的工作量,减少了网络传输的数据量 ...
- Apache如何开启Gzip压缩
https://teddysun.com/326.html 在开启 Gzip 之前,需先确认 Apache 的配置文件中有没有加载 mod_deflate 和 mod_headers 模块. 打开Ap ...
- Apache httpd 2.4.27开启GZIP压缩功能
转载自素文宅博客:https://blog.yoodb.com/yoodb/article/detail/1373 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的文件压缩算法,现在的应 ...
随机推荐
- python urllib2 发起http请求post
使用urllib2发起post请求 def GetCsspToken(): data = json.dumps({"userName":"wenbin", &q ...
- ORA-00988: missing or invalid password(s)
创建账号或修改账号密码时有可能会遇到ORA-00988: missing or invalid password(s),那么什么情况下会遇到这种错误呢? 一般是因为密码的设置不符合命名规范: 1:密码 ...
- SQL Server 2000: 维护计划无法执行
开启“sql server agent”服务,控制面板-->管理工具-->服务
- SQL Server调优系列基础篇(并行运算总结)
前言 上三篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符.联合运算符的优化技巧. 本篇我们分析SQL Server的并行运算,作为多核计算机盛行的今天,SQL Server也会适时调整自 ...
- .NET笔记(一)
物理路径 context.Server.MapPath() 获取DataTable的某个单元格的值 tb.Rows[i][j] 或 tb.Rows["某一行"]["某一列 ...
- web进阶之jQuery操作DOM元素&&MySQL记录操作&&PHP面向对象学习笔记
hi 保持学习数量和质量 1.jQuery操作DOM元素 ----使用attr()方法控制元素的属性 attr()方法的作用是设置或者返回元素的属性,其中attr(属性名)格式是获取元素属性名的值,a ...
- POJ3967Ideal Path[反向bfs 层次图]
Ideal Path Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 1754 Accepted: 240 Descri ...
- Codeforces 410C.Team[构造]
C. Team time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
- 文件上传&文件下载
一.单个文件上传 文件上传需要两个jar包: 首先制作一个简单的页面,用于实现文件上传 <h1>单个文件上传</h1> <s:form action="uplo ...
- 开启flask调试
直接将app.debug = True时,程序出错并没有出现调试界面. 按照如下设置,flask+uwsgi情况下,python报错时会在浏览器中提示错误信息.方便调试. from werkzeug. ...