恰当的使用Apache网页的压缩和缓存技术,对于Apache的性能提升有非常显著的效果。
fiddler抓包工具分享链接:https://pan.baidu.com/s/14_E8vXznYZ0ky1kBjKoQGg
准备一台linux虚拟机(192.168.220.129),一台win10虚拟机
一、网页压缩:
使用网页压缩可以提升应用程序的速度,同时并不需要任何的成本即可实现。
(1)gzip介绍:
配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。
作用:
- 降低了网络传输的字节数,加快网页加载的速度;
- 节省流量,改善用户的浏览体验;
- gzip与搜索引擎的抓取工具有着更好的关系
(2)Apache实现网页压缩的功能模块包括:
- mod_gzip 模块
- mod_deflate 模块
1、两者均使用gzip压缩算法,运行原理类似;
2、mod_delfate 压缩速度略快,而mod_gzip 的压缩比例高;
3、mod_gzip 对服务器CPU 的占用要高一点;
4、高流量的服务器,使用mod_deflate 可能会比 mod_gzip 加载速度更快
(3)操作示例:
第一步:安装mod_deflate 模块,重新编译安装Apache,在参数中加入mod_deflate模块内容。
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \ //加入此行代码
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
第二步:make && make install 安装
注意:如果安装过程中出现 apr-util致命错误:expat.h:没有那个文件或目录 的报错,说明缺少 expat库,安装一下即可,命令:yum install -y expat-devel
第三步:手工编译安装结束之后,配置 mod_deflate 模块启用
vim /usr/local/httpd/conf/httpd.conf
开启 LoadModule deflate_module modules/mod_deflate.so
在文件末尾添加如下代码:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
// 表示对什么样的内容启用gzip压缩
DeflateCompressionLevel 9 //表示压缩级别
SetOutputFilter DEFLATE //代表启用deflate模块对本站点的输出进行gzip压缩
</IfModule>
第四步:检测 httpd.conf 语法
1、命令:apachectl -t
2、开启:/usr/local/httpd/bin/apachectl start
3、在 /bin 目录下,执行deflate
./apachectl -t -D DUMP_MODULES | grep “deflate”
第五步:客户机安装fiddler,访问192.168.220.129,进行抓包测试
第六步:为了更加直观的展示压缩效果,我们在首页中加入一张图片
此时,客户机win10上刷新一下,图片就加载出来了。
同时观察,图片大小是否进行压缩了
二、网页缓存
Apache 的mod_expries 模块会自动生成页面头部信息中的 Express标签和 Cache-Control 标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要再次向服务器发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。
在 httpd-2.4.29目录下
第一步:安装mod_expires 模块
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \ //加入 mod_deflate 模块
--enable-expires \ //加入 mod_expires 模块
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
第二步:make&&make install
第三步:在 /usr/local/httpd/conf/httpd.conf下
修改监听地址:192.168.220.129:80
修改域名:www.kgc.com
LoadModule expires_module modules/mod_expires.so //开启 expires_module 模块
在末行加入以下代码:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
</IfModule>
第四步:检测 httpd.conf 语法
1、命令:apachectl -t
2、开启服务:./apachectl start
检测模块是否安装:./apachectl -t -D DUMP_MODULES | grep “expires”
第五步:客户机验证