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>
  <h1>It works!</h1>
  <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秒了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章