Apache如何实现网页压缩与缓存

37次阅读
没有评论

共计 7380 个字符,预计需要花费 19 分钟才能阅读完成。

这篇文章主要介绍 Apache 如何实现网页压缩与缓存,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Apache 网页优化概念

在企业中,部署 Apache 后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的
服务器配置的,以前的配置已经不适用当今互联网时代,为了适应企业需求, 就需要考虑如何提升 Apache 的性
能与稳定性,这就是 Apache 优化的内容。

优化内容:

配置网页压缩功能

配置网页缓存时间

配置防盗链

配置隐藏版本号

gzip 介绍

配置 Apache 的网页压缩功能,是使用 gzip 压缩算法来对网页内容进行压缩后再传输到客户端浏览器。

作用

降低了网络传输的字节数,加快网页加载的速度

节省流量,改善用户的浏览体验

gzip 与搜索弓 | 擎的抓取工具有着更好的关系

Apache 的压缩模块 Apache 实现网页压缩的功能模块包括

mod_gzip 模块
mod_deflate 模块

Apache 1.x

没有内建网页压缩技术,但可使用第三 E 方 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 加载速度更快

配置网页压缩功能实验

(1)在宿主机将我们所需的工具包共享出去。

Apache 如何实现网页压缩与缓存

(2)通过 Samba 服务将工具包挂载到 Linux 系统。

[root@localhost ~]# smbclient -L //192.168.100.50/ // 查看共享
Enter SAMBA\root s password: // 匿名共享,没有密码,直接回车
OS=[Windows 10 Enterprise LTSC 2019 17763] Server=[Windows 10 Enterprise LTSC 2019 6.3]
 Sharename Type Comment
 --------- ---- -------
 IPC$ IPC  远程  IPC
 share Disk 
 tools Disk 
 Users Disk 
Connection to 192.168.100.50 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
NetBIOS over TCP disabled -- no workgroup available
[root@localhost ~]# mkdir /mnt/tools // 创建挂载目录
[root@localhost ~]# mount.cifs //192.168.100.50/tools /mnt/tools/ // 挂载
Password for root@//192.168.100.50/tools: 
[root@localhost ~]# cd /mnt/tools/ // 进入挂载目录
[root@localhost tools]# ls // 查看
awstats-7.6.tar.gz extundelete-0.2.4.tar.bz2 forbid.png jdk-8u191-windows-x64.zip LAMP-C7
cronolog-1.6.2-14.el7.x86_64.rpm fiddler.exe intellijideahahau2018.rar john-1.8.0.tar.gz picture.jpg
[root@localhost tools]#

(3)将源码编译安装 Apache 服务的压缩包解压到“/opt/”目录。

[root@localhost tools]# cd LAMP-C7/ // 切换目录
[root@localhost LAMP-C7]# ls
apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt php-5.6.11.tar.bz2
apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
[root@localhost LAMP-C7]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/ // 解压
[root@localhost LAMP-C7]# tar zxvf apr-1.6.2.tar.gz -C /opt/ // 解压
[root@localhost LAMP-C7]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/ // 解压

(4)进入“/opt/”目录,将两个 apr 包移动到“httpd-2.4.29/srclib/”目录,并重命名。

[root@localhost LAMP-C7]# cd /opt/ 
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
[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

(5)进入“httpd-2.4.29/”目录,然后安装编译所需环境包。

[root@localhost opt]# ls
httpd-2.4.29 rh
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ls
ABOUT_APACHE ap.d CHANGES docs httpd.spec libhttpd.dep Makefile.win README srclib
acinclude.m4 build CMakeLists.txt emacs-style include libhttpd.dsp modules README.cmake support
Apache-apr2.dsw BuildAll.dsp config.layout httpd.dep INSTALL libhttpd.mak NOTICE README.platforms test
Apache.dsw BuildBin.dsp configure httpd.dsp InstallBin.dsp LICENSE NWGNUmakefile ROADMAP VERSIONING
apache_probes.d buildconf configure.in httpd.mak LAYOUT Makefile.in os server
[root@localhost httpd-2.4.29]# 
[root@localhost httpd-2.4.29]# yum -y install \
  gcc \
  gcc-c++ \
  make \
  pcre \
  pcre-devel \
  expat-devel \
  zlib-devel \
  perl
......// 省略安装过程

(6)进行对 Apache 服务器的配置。

[root@localhost httpd-2.4.29]# ./configure \
  --prefix=/usr/local/httpd \ // 安装路径
  --enable-deflate \ // 启用压缩模块支持
  --enable-expires \ // 启用缓存模块支持
  --enable-so \ // 启用动态加载模块支持
  --enable-rewrite \ // 启用网页地址重写功能
  --enable-charset-lite \ // 启用字符集支持
  --enable-cgi // 启用 CGI 脚本程序支持

(7)编译安装 Apache 服务。

[root@localhost httpd-2.4.29]# make   make install
......// 省略编译安装过程
[root@localhost httpd-2.4.29]#

(8)对 Apache 服务配置文件进行修改。

[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf // 创建软链接,方便使用
[root@localhost httpd-2.4.29]# 
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
Listen 192.168.52.133:80 // 开启 IPv4 监听
#Listen 80 // 注释 IPv6 监听
ServerName www.abc.com:80 // 设置域名
LoadModule headers_module modules/mod_headers.so // 请求头部,默认开启
LoadModule deflate_module modules/mod_deflate.so // 开启压缩模块
LoadModule filter_module modules/mod_filter.so // 过滤器,默认开启
 IfModule mod_deflate.c  // 尾行添加压缩模块信息
 AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png // 启用压缩的内容
 DeflateCompressionLevel 9 // 压缩级别,9 级
 SetOutputFilter DEFLATE // 启用 deflate 模块对本站点的输出进行 gzip 压缩
 /IfModule

(9)检查配置文件格式,格式正确。

[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@localhost httpd-2.4.29]#

(10)将“/usr/local/httpd/bin/”目录下的“apachectl”文件移动到“/etc/init.d/”目录下,并在文件开头添加 chkconfig 识别配置,然后将其添加为标准的 Linux 系统服务

[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd // 复制
[root@localhost httpd-2.4.29]# vim /etc/init.d/httpd // 在配置文件添加两行声明
# chkconfig: 35 85 21 // 服务识别参数,在级别 3、5 中启动:启动和关闭的顺序分别为 85、21
# description: Apache is a World Wide Web server // 服务描述信息
[root@localhost httpd-2.4.29]# chkconfig --add httpd // 将 httpd 服务添加为系统服务
[root@localhost httpd-2.4.29]# 
[root@localhost httpd-2.4.29]# service httpd start // 启动 Apache 服务
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ // 将 Apache 服务的命令文件,建立软链接到易于系统识别的目录
[root@localhost httpd-2.4.29]#

(11)检查模块是否安装成功。

[root@localhost httpd-2.4.29]# apachectl -t -D DUMP_MODULES | grep  deflate  // 验证模块
deflate_module (shared)
[root@localhost httpd-2.4.29]# 
[root@localhost httpd-2.4.29]# systemctl stop firewalld.service // 关闭防火墙
[root@localhost httpd-2.4.29]# setenforce 0 // 关闭增强性安全功能
[root@localhost httpd-2.4.29]#

(12)将挂载目录的“picture.jpg”图片复制到 Apache 服务站点目录“/usr/local/httpd/htdocs/”下,然后将图片添加到首页文件。

[root@localhost httpd-2.4.29]# cd /mnt/tools/ // 切换目录
[root@localhost tools]# ls
awstats-7.6.tar.gz extundelete-0.2.4.tar.bz2 forbid.png jdk-8u191-windows-x64.zip LAMP-C7
cronolog-1.6.2-14.el7.x86_64.rpm fiddler.exe intellijideahahau2018.rar john-1.8.0.tar.gz picture.jpg
[root@localhost tools]# cp picture.jpg /usr/local/httpd/htdocs/ // 复制图片
[root@localhost tools]# cd /usr/local/httpd/htdocs/ // 切换目录
[root@localhost htdocs]# ls // 查看
index.html picture.jpg
[root@localhost htdocs]# vim index.html // 编辑首页文件
 html 
  body 
  h2 It works! /h2 
  img src= picture.jpg 
  /body 
 /html

(13)在 win10 主机安装抓包工具 fiddler。

Apache 如何实现网页压缩与缓存

(14)在 win10 主机访问 Apache 网站。

Apache 如何实现网页压缩与缓存

(15)查看抓包内容,可以看到 Headers 里,图片已经被 gzip 压缩。

Apache 如何实现网页压缩与缓存

Apache 的缓存模块

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

配置网页缓存时间实验

(1)接着上面的实验,缓存模块在配置 Apache 服务时一起添加了。所以直接对 Apache 配置文件进行修改。

[root@localhost htdocs]# vim /etc/httpd.conf
LoadModule expires_module modules/mod_expires.so // 开启缓存模块
 IfModule mod_expires.c  // 尾行添加缓存模块信息
 ExpiresActive On // 缓存开启
 ExpiresDefault  access plus 50 seconds  // 缓存时间 50 秒
 /IfModule

(2)检查 Apache 配置文件格式,格式正确。

[root@localhost htdocs]# apachectl -t
Syntax OK
[root@localhost htdocs]#

(3)重启服务,查看监听端口

[root@localhost htdocs]# service httpd stop // 关闭服务
[root@localhost htdocs]# service httpd start // 开启服务
[root@localhost htdocs]# 
[root@localhost htdocs]# netstat -ntap | grep 80 // 检查监听端口
tcp 0 0 192.168.52.133:80 0.0.0.0:* LISTEN 83296/httpd 
[root@localhost htdocs]#

(4)检查缓存模块是否安装成功。

[root@localhost htdocs]# apachectl -t -D DUMP_MODULES | grep  expires  // 验证模块
 expires_module (shared)
[root@localhost htdocs]#

(5)用 win10 主机再次访问 Apache 站点。

Apache 如何实现网页压缩与缓存

(6)查看抓包,Headers 里可以看到缓存时间为 50 秒。

Apache 如何实现网页压缩与缓存

(7)我们将 Apache 服务配置文件里的缓存时间改为 30 秒,然后重启服务。

[root@localhost htdocs]# vim /etc/httpd.conf
 IfModule mod_expires.c 
 ExpiresActive On
 ExpiresDefault  access plus 30 seconds  // 将 50 改为 30
 /IfModule 
[root@localhost htdocs]# service httpd stop // 关闭服务
[root@localhost htdocs]# service httpd start // 启动服务
[root@localhost htdocs]#

(8)再次用 win10 主机访问 Apache 服务站点。

Apache 如何实现网页压缩与缓存

(9)查看抓包,Headers 里可以看到缓存时间已经从 50 秒变为 30 秒了。

Apache 如何实现网页压缩与缓存

以上是“Apache 如何实现网页压缩与缓存”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计7380字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)