目录
一.网页压缩的概述
- 网站的访问速度是由个多个因素所共同决定的,这些因素包括应用程序的响应速度,网络带宽、服务器性能、与客户端之间的网络传输速度等。
- 使用网页压缩可以提升应用程序的速度,提升Apache的执行速度,但是网页压缩会使服务器cpu占用率提高一两个百分点
- 开启Apache的gzip模块,可以使用gzip压缩算法来对Apache服务器发布的网页内容进行压缩之后在传输到客户端浏览器,降低了网络传输的字节数,加快了网页加载的速度
Apache的压缩模块
- 在Apache 1.x的系列没有内建的网页压缩技术,使用的是额外的第三方mod_gzip模块来执行压缩
- 在Apache 2.x的系列内建了mod_deflate这个模块,用以取代mod_gzip
- 以上两者都是使用gzip原理
- mod_deflate压缩速度略快,而mod_gzip的压缩比略高,默认情况之下,mod_gzip比mod_deflate多出4%~6%的压缩量,此外mod_deflate只需要较少的资源来压缩文件
- 在高流量的服务器中mod_deflate会比mod_gzip的加载速度更快
- 总结以上:如果网站访问量较小,想要加快网页的加载速度,使用mod_gzip较好;如果网站的访问量较大,而且使用的是共享的虚拟主机,所分分配的系统资源有限,建议使用mod_deflate
- 此外,从Apache 2.0.45 开始,mod_defalte可以使用DeflateCompressionLevel指令来设置压缩级别,该指令的值为1(压缩速度快,压缩质量低)到9(压缩速度慢。压缩质量高),默认是级别6
二.网页压缩实验
- 解压apache服务的安装包
tar zxvf apr-1.6.2.tar.gz -C /opt
tar zxvf apr-util-1.6.0.tar.gz -C /opt
tar jxvf httpd-2.4.29.tar.bz2 -C /opt
- 将apr和apr-util组件放到http中去
cd /opt
mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
mv apr-1.6.2/ httpd-2.4.29/srclib/apr
- 安装环境包
yum install gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel make perl -y
- 配置Apache服务
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
- 安装且编译
make && make install
- 编辑主配置文件
vim /usr/local/httpd/conf/httpd.conf
Listen 192.168.43.213:80
#Listen 80
ServerName www.kgc.com:80
#取消这些文件的注释
LoadModule headers_moudule modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so
LoadMoudule filter_module modules/mod_filter.so
#在主配置文件最后加入
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
- 验证脚本和模块
[root@localhost bin]# ./apachectl -t
Syntax OK
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "deflate"
deflate_module (shared)
- 关闭防火墙,启动服务
systemctl stop firewalld
setenforce 0
systemctl start httpd
- 验证压缩模块
三.网页缓存的概述
- 网页缓存是将一部分经常不会改变或变动很少的页面缓存,而下次浏览器再次访问这些页面时,不需要再去下载这些页面,提高了用户的访问速度
- Apache的mod_expires模块会自动生成页面头部的信息中的Express标签和Cache-Control标签,客户端浏览器会根据标签决定下次访问实在本地服务器的缓存中获取页面,不需要再次向服务器发出请求,从而降低了客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
四.网页缓存的实验
- 解压
tar zxvf apr-1.6.2.tar.gz -C /opt
tar zxvf apr-util-1.6.0.tar.gz -C /opt
tar jxvf httpd-2.4.29.tar.bz2 -C /opt
- 将apr和apr-util组件放到httpd的srclib目录中去
cd /opt
mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
mv apr-1.6.2/ httpd-2.4.29/srclib/apr
- 安装环境包
yum install gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel make perl -y
- 配置apache服务
./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-expires \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
- 添加apache服务到系统
grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd
vim /etc/init.d/httpd
#!/bin/bash
# chkconfig:2345 85 15
# description:Apache is a World Wide Web server.
chmod +x /etc/init.d/httpd
chkconfig --add httpd
chkconfig --list httpd
chkconfig --level 35 httpd on
- 配置主配置文件参数
vim /usr/local/httpd/conf/httpd.conf
Listen 192.168.43.214:80
#Listen 80
ServerName www.kgc.com:80
#开启模块
LoadModule expires_module modules/mod_expires.so
#在配置文件最后加上下面参数
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
</IfModule>
- 验证脚本,模块
#验证脚本
cd /usr/local/httpd/bin
./apachectl -t
出现 Syntax OK 成功
#验证模块
./apachectl -t -D DUMP_MODULES | grep "expires"
expires_module (shared)
- 关闭防火墙开启服务
systemctl stop firewalld
setenforce 0
systemctl start httpd
- 验证缓存服务