共計 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)在宿主機將我們所需的工具包共享出去。

(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。

(14)在 win10 主機訪問 Apache 網站。

(15)查看抓包內容,可以看到 Headers 里,圖片已經被 gzip 壓縮。

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 站點。

(6)查看抓包,Headers 里可以看到緩存時間為 50 秒。

(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 服務站點。

(9)查看抓包,Headers 里可以看到緩存時間已經從 50 秒變為 30 秒了。

以上是“Apache 如何實現網頁壓縮與緩存”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!