Apache网页优化之压缩与缓存
在企业中,部署Apache后只采用默认的配置参数,会
引发网站很多问题,换言之默认配置是针对以前较低的
服务器配置的,以前的配置已经不适用当今互联网时代
为了适应企业需求,就需要考虑如何提升Apache的性
能与稳定性,这就是Apache优化的内容
gzip介绍
■配置Apache的网页压缩功能,是使用gzip压缩算法来
对网页内容进行压缩后再传输到客户端浏览器
■作用
●降低了网络传输的字节数,加快网页加载的速度
●节省流量,改善用户的浏览体验
●gzip与搜索引擎的抓取工具有着更好的关系
Apache实现网页压缩的功能模块包括
mod_gzip 模块
moddeflate模块
Apache 1.x
●没有内建网页压缩技术,但可使用第三方mod gzip 模块执行压缩
Apache 2.x
在开发的时候,内建了mod deflate 这个模块,取代mod gzip
mod gzip 模块与mod deflate 模块
●两者均使用gzip压缩算法,运作原理类似
●mod deflate 压缩速度略快,而mod _gzip 的压缩比略高mod_gzip对服务器CPU的占用要高一些
高流量的服务器,使用mod_deflate可能会比mod_gzip加载速
度更快
配置网页压缩功能
首先检查是否安装了mod_deflate模块
●执行apachectl -t -D DUMP_MODULES命令
●如果输出中没有deflate_module (static),说明编译时没有安装
mod_deflate模块
若没有安装则要重新编译安装
●./configure --enable-deflate...
●make && make install
■在配置httpd.conf中配置开启gzip功能
●AddOutputFilterByType DEFLATE texthtml text/plain text/css
text/xml text/javascript
●DeflateCompressionL evel
●SetOutputFilter DEFL ATE
■第一行代表对什么样的内容启用gzip压缩
■第二行代表压缩级别
■第三行代表启用deflate模块对本站点的输出进行gzip压缩
Apache压缩实操
安装Apache服务
远程挂载软件包文件夹到本地并查看
[ ~]# mkdir /abc //创建挂载点 [ ~]# mount.cifs //192.168.100.7/LAMP-C7 /abc/ //挂载 Password for //192.168.100.10/LAMP-C7: [ ~]# cd /abc/ [ abc]# ls apr-1.6.2.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm LAMP-php5.6.txt apr-util-1.6.0.tar.gz Discuz_X2.5_SC_UTF8.zip mysql-5.6.26.tar.gz awstats-7.6.tar.gz httpd-2.4.29.tar.bz2 php-5.6.11.tar.bz2
解压源码包到/opt目录下,并移动httpd组件包
[ abc]# tar zxvf apr-1.6.2.tar.gz -C /opt/ [ abc]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/ [ abc]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/ [ abc]# cd /opt/ [ opt]# ls apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 httpd.txt rh [ opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr [ opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
安装实验环境必须的软件包
yum -y install gcc gcc-c++ make pcre-devel zlib-devel expat-devel pcre perl
配置安装目录及模块
[ opt]#cd /opt/httpd-2.4.29/ ./configure --prefix=/usr/local/httpd --enable-so --enable-deflate --enable-expires --enable-rewrite --enable-charset-lite --enable-cgi
编译安装Apache
make && make install
修改Apache配置文件
[ httpd-2.4.29]# cd /usr/local/httpd/ [ httpd]# ls bin cgi-bin error icons lib man modules build conf htdocs include logs manual [ httpd]# cd conf [ conf]# ls extra httpd.conf magic mime.types original [ conf]# vim httpd.conf [ conf]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf [ conf]# vim /etc/httpd.conf /deflate搜索关键词查找关键词所在行 LoadModule deflate_module modules/mod_deflate.so //去除注释开启服务 /headers搜索关键词查找关键词所在行 LoadModule headers_module modules/mod_headers.so //去除注释开启服务 /filter搜索关键词查找关键词所在行 LoadModule filter_module modules/mod_filter.so //去除注释开启服务 使用/Listen查找关键词所在位置 注释ipv6,开启ipv4并将监听端口改为本机地址 Listen 192.168.131.129:80 #Listen 80 使用/ServerName查找关键词,并做如下修改 ServerName www.kgc.com:80 在文件末行插入以下内容 <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/ipg text/png DeflateCompressionLevel 9 SetOutputFilter DEFLATE </IfModule>
[ conf]# /usr/local/httpd/bin/apachectl -t Syntax OK //验证语法是否正确 [ bin]# ./apachectl start //启动服务 [ bin]# netstat -ntap | grep 80 tcp 0 0 192.168.35.131:80 0.0.0.0:* LISTEN 35887/httpd [ bin]# systemctl stop firewalld.service //关闭防火墙 [ bin]# setenforce 0 //关闭增强型安全功能 [ bin]# ./apachectl -t -D DUMP_mooules | grep "expire" Syntax OK
使用测试机win10进行测试,在浏览器输入网址192.168.131.129即可访问到主页
最后打开fiddre软件进行抓包
共享文件夹中的图片复制到网页文件目录下,并将图片添加到网页中
[ bin]# cd /abc/ [ LAMP]# ls apr-1.6.2.tar.gz fangdao.jpg apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 awstats-7.6.tar.gz tupian.png cronolog-1.6.2-14.el7.x86_64.rpm mysql-5.6.26.tar.gz Discuz_X2.5_SC_UTF8.zip php-5.6.11.tar.bz2 [ LAMP]# cp lf.jpg /usr/local/httpd/htdocs/ //把图片复制到网页文件夹 [ LAMP]# cd /usr/local/httpd/ [ httpd]# cd htdocs/ [ htdocs]# ls index.html tupian.png [ htdocs]# vim index.html <html><body><h1>It works!</h1> <img src="tupian.png"/> </body></html>
现在我们再次使用测试机进行访问就可以看到添加的图片,我们通过抓包软件可以看到有图片的抓取信息中有在端口处进行gzip压缩处理信息
配置网页的缓存时间
■通过mod expire模块配置 Apache,使网页能在客户端
浏览器缓存一段时间,以避免重复请求
■启用mod expire模块后, 会自动生成页面头部信息中
的Expires标签和Cache-Control标签,从而降低客户
端的访问频率和次数,达到减少不必要的流量和增加访
问速度的目的
■修改httpd.conf配置文件
●启用mod expires模块,并设置http协议下任意格式的文档均60
秒后过期
<lfModule mod expires.c\>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</lfModule\>
■重启httpd服务
Apache缓存实操
在配置完Apache网页压缩在前提下再进行如下配置
配置Apache配置文件
[ htdocs]# vim /etc/httpd.conf 在配置文件末行插入以下内容 <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 50 seconds" </IfModule>
检查语法正确性并重启服务
[ htdocs]# pwd /usr/local/httpd/htdocs [ htdocs]# cd /usr/local/httpd/ [ httpd]# cd bin/ [ bin]# ./apachectl -t //检查语法 Syntax OK [ bin]# ./apachectl stop [ bin]# ./apachectl start
我们在用测试机win10里的浏览器进行抓包测试,此时我们可以看到我们设置的网页缓存的时间在头部信息中出现