Apache压网页优化页面(缓存、压缩)开启加速模式

介绍:

网页压缩来进一步提升网页的浏览速度,它完全不需要任何的成本,只不过是会让您的服务器CPU占用率稍微提升一两个百分点而已或者更少.

在这里插入图片描述

原理:

网页压缩是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,流行的浏览器都是支持的,包括 IE、FireFox、Opera 等;服务器有 Apache 和 IIS 等。双方的协商过程如下:

1、首先浏览器请求某个 URL 地址,并在请求的头 (head) 中设置属性 accept-encoding 值为 gzip, deflate,表明浏览器支持 gzip 和 deflate 这两种压缩方式(事实上 deflate 也是使用 gzip 压缩协议);

2、WEB 服务器接收到请求后判断浏览器是否支持压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容;

3、浏览器获取响应内容后,判断内容是否被压缩,如果是则解压缩,然后显示响应页面的内容。

在实际的应用中我们发现压缩的比率往往在 3 到 10 倍,也就是本来 50k 大小的页面,采用压缩后实际传输的内容大小只有 5 至 15k大小,这可以大大节省服务器的网络带宽。

网页压缩zip概述

  • 配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后在传输到客户端浏览器
  • 作用
    • 降低了网络传输的字节数,加快网页加载的速度
    • 节省流量,改善用户的浏览体验
    • gzip与搜索引擎的抓取工作有着更好的关系

Apache的压缩模块

  • Apache实现网页压缩的功能模块包括
    • mod_gzip模块
    • mod_deflate模块
  • 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加载速度更快

一:网页压缩实验

  • 首先安装apache
[root@localhost ~]# cd /opt
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2  rh
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# ls
apr-1.6.2         apr-util-1.6.0         httpd-2.4.29          rh
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost opt]# ls
apr-1.6.2.tar.gz       httpd-2.4.29          rh
apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
  • 安装编译器和其他工具
[root@localhost opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl
> zlib-devel \
  • configure配置
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ls
ABOUT_APACHE     docs            Makefile.win
acinclude.m4     emacs-style     modules
Apache-apr2.dsw  httpd.dep       NOTICE
Apache.dsw       httpd.dsp       NWGNUmakefile
apache_probes.d  httpd.mak       os
ap.d             httpd.spec      README
build            include         README.cmake
BuildAll.dsp     INSTALL         README.platforms
BuildBin.dsp     InstallBin.dsp  ROADMAP
buildconf        LAYOUT          server
CHANGES          libhttpd.dep    srclib
CMakeLists.txt   libhttpd.dsp    support
config.layout    libhttpd.mak    test
configure        LICENSE         VERSIONING
configure.in     Makefile.in

[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-deflate
  • make编译make install
[root@localhost httpd-2.4.29]# make		'//编译'
...省略内容
[root@localhost httpd-2.4.29]# make install  '//安装'
...省略内容
  • 编辑配置文件
#将主配置文件通过软链接,连接到/etc/httpd.conf下 方便管理
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf  /etc/httpd.coonf
[root@localhost httpd-2.4.29]# vim httpd.conf
[root@localhost httpd-2.4.29]# cd /etc
[root@localhost etc]# vim httpd.conf 

#搜索/headres 头部信息
LoadModule headers_module modules/mod_headers.so
#/搜索/deflate,若没有,需要检查之前配置重新编译   搜索就取消注释
LoadModule deflate_module modules/mod_deflate.so
#搜索filter(过滤器)  要是在就在末行添加以下信息
LoadModule filter_module modules/mod_filter.so
#添加以下内容

<IfModule>
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
  DeflateCompressionLevel 9
  SetOutputFilter DEFLATE
</IfModule>

#修改一下监听地址
Listen 20.0.0.41:80
#Listen 80   #注释ipv6
#修改域名  开启功能
ServerName www.niu.com:80
  • 验证语法重启服务
[root@localhost etc]# /usr/local/httpd/bin/httpd  -t
Syntax OK
#开启服务
[root@localhost etc]# /usr/local/httpd/bin/httpd
#关闭安全防护
[root@localhost etc]# sentenforce 0
[root@localhost etc]# systemctl stop firewalld.service
#查看端口
[root@localhost etc]# netstat -ntap | grep httpd
tcp        0      0 20.0.0.41:80            0.0.0.0:*               LISTEN      121125/httpd    
[root@localhost etc]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.htm
#复制一张图片进来
[root@localhost htdocs]# rz -E
rz waiting to receive.
[root@localhost htdocs]# ls
1389753641370.jpg  index.html
[root@localhost htdocs]# vim index.html
3编辑主页信息
<html><body><h1>It works!</h1></body></html>
<img src="1389753641370.jpg"/>                            
  • 验证配置

  • 打开一台宿主机

  • 宿主机安装校验工具filddler

mark

mark

二:网页缓存

配置网页的缓存时间概述
  • 通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求
  • 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

2.1:Apache网页缓存实验

  • 跟网页压缩环境相同
[root@localhost opt]# cd /opt
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2  rh
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
  • 安装编译工具
[root@localhost opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl
> zlib-devel \
  • configure配置
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-deflate \
> --enable-expires \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi
  • make编译make install
[root@localhost httpd-2.4.29]# make		'//编译'
...省略内容
[root@localhost httpd-2.4.29]# make install  '//安装'
...省略内容
  • 编辑配置文件
[root@localhost httpd-2.4.29]# vim httpd.conf
#进来/搜索expires   开启模块 去掉注释
LoadModule expires_module modules/mod_expires.so
#末行添加
<IfModule mod_expires.c>
    ExpiresActive On          #开启缓存功能
    ExpiresDefault "access plus 50 seconds"    #保持50s
  </IfModule>
#开启监听地址
Listen 20.0.0.41:80
#Listen 80
#开启域名
ServerName www.xx.com:80

[root@localhost bin]# pwd
/usr/local/httpd/bin
[root@localhost bin]# ./apachectl -t
Syntax OK
#执行脚本
[root@localhost bin]# ./apachectl
[root@localhost bin]# netstat -ntap | grep httpd
tcp        0      0 20.0.0.41:80            0.0.0.0:*               LISTEN      52612/httpd         

#查看是否安装mod——deflate模块
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "expires"
 expires_module (shared)
[root@localhost bin]# systemctl stop firewalld.service 
[root@localhost bin]# setenforce 

mark

  • 修改缓存时间配置
[root@localhost bin]# vim /usr/local/httpd/conf/httpd.conf
<IfModule mod_expires.c>
   ExpiresActive On
   ExpiresDefault "access plus 70 seconds"
 </IfModule>
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start

mark

总结:

使用apache进行页面压缩只是在服务器本身的响应速度已经足够优化(快)的情况下进行,也就是说在带宽成为系统瓶颈的时候才来考虑该方案。

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/107974910