利用壓縮網(wǎng)頁(yè)來提升網(wǎng)站瀏覽速度

2022-09-24    分類: 網(wǎng)站建設(shè)

網(wǎng)站的訪問速度是由多個(gè)因素所共同決定的,這些因素例如應(yīng)用程序的響應(yīng)速度、網(wǎng)絡(luò)帶寬、服務(wù)器性能、與客戶端之間的網(wǎng)絡(luò)傳輸速度等等。其中重要的一個(gè)因素是應(yīng)用程序本身的響應(yīng)速度,因此當(dāng)你為網(wǎng)站性能所苦惱時(shí),你第一個(gè)需要著手進(jìn)行處理的便是盡可能的提升應(yīng)用程序的執(zhí)行速度,你可以使用緩存或者是優(yōu)化代碼的執(zhí)行效率來提升應(yīng)用程序的速度。

但是,本文并不是介紹如何來提升應(yīng)用程序的執(zhí)行效率,前面提到的只不過是為了防止您病急亂投醫(yī)。在確保您的應(yīng)用程序的性能已經(jīng)達(dá)到足夠好,同時(shí)服務(wù)器的性能也完全滿足的情況下,不妨來試試網(wǎng)頁(yè)壓縮來進(jìn)一步提升網(wǎng)頁(yè)的瀏覽速度,而且非常重要的是,它完全不需要任何的成本,只不過是會(huì)讓您的服務(wù)器CPU占用率稍微提升一兩個(gè)百分點(diǎn)而已或者更少。

網(wǎng)頁(yè)壓縮是一項(xiàng)由 WEB 服務(wù)器和瀏覽器之間共同遵守的協(xié)議,也就是說 WEB 服務(wù)器和瀏覽器都必須支持該技術(shù),所幸的是現(xiàn)在流行的瀏覽器都是支持的,包括 IE、FireFox、Opera 等;服務(wù)器有 Apache 和 IIS 等。雙方的協(xié)商過程如下:

首先瀏覽器請(qǐng)求某個(gè) URL 地址,并在請(qǐng)求的頭 (head) 中設(shè)置屬性 accept-encoding 值為 gzip, deflate,表明瀏覽器支持 gzip 和 deflate 這兩種壓縮方式(事實(shí)上 deflate 也是使用 gzip 壓縮協(xié)議,下面我們會(huì)介紹二者之間的區(qū)別); WEB 服務(wù)器接收到請(qǐng)求后判斷瀏覽器是否支持壓縮,如果支持就傳送壓縮后的響應(yīng)內(nèi)容,否則傳送不經(jīng)過壓縮的內(nèi)容; 瀏覽器獲取響應(yīng)內(nèi)容后,判斷內(nèi)容是否被壓縮,如果是則解壓縮,然后顯示響應(yīng)頁(yè)面的內(nèi)容。

在實(shí)際的應(yīng)用中我們發(fā)現(xiàn)壓縮的比率往往在 3 到 10 倍,也就是本來 50k 大小的頁(yè)面,采用壓縮后實(shí)際傳輸?shù)膬?nèi)容大小只有 5 至 15k 大小,這可以大大節(jié)省服務(wù)器的網(wǎng)絡(luò)帶寬,同時(shí)如果應(yīng)用程序的響應(yīng)足夠快時(shí),網(wǎng)站的速度瓶頸就轉(zhuǎn)到了網(wǎng)絡(luò)的傳輸速度上,因此內(nèi)容壓縮后就可以大大的提升頁(yè)面的瀏覽速度。

接下來我們介紹幾種常用的環(huán)境下如何啟用網(wǎng)頁(yè)壓縮功能。

純 Tomcat 服務(wù)器

如果您的 WEB 應(yīng)用程序是跑在 Tomcat 服務(wù)器下的,而且直接使用 Tomcat 所提供的 HTTP 服務(wù),那建議你馬上動(dòng)手,因?yàn)閷?shí)在是太簡(jiǎn)單了,你只需要在 server.xml 配置文件中給 HTTP Connector 增加一個(gè) compression 的參數(shù)值為 on 并重啟 Tomcat 服務(wù)器就立刻生效,配置如下:

<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" compression="on"/>
Tomcat 采用的是 HTTP/1.1 的 GZIP 壓縮協(xié)議,它會(huì)根據(jù)瀏覽器送過來的請(qǐng)求中的 accept-encoding 值是否包含 gzip 來判斷瀏覽器是否支持 gzip 壓縮協(xié)議,如果瀏覽器支持就啟用 gzip 壓縮,否則就不進(jìn)行任何壓縮處理。Tomcat 中還有另外一個(gè)參數(shù) compressableMimeType,這個(gè)參數(shù)可以用來指定壓縮哪種類型的內(nèi)容,例如可以指定該配置值為:text/html,text/plain ,則只壓縮 contentType 為 text/html 和 text/plain 的頁(yè)面,不過您好也將 css 和 javascript 文件也算在壓縮的文件類型中,因?yàn)檫@兩者的壓縮效果也十分的明顯。

Apache 服務(wù)器

在 apache 1.3 版本,大家常用 mod_gzip 對(duì)輸出內(nèi)容進(jìn)行壓縮,現(xiàn)在主流的瀏覽器都支持 gzip 解壓縮。在 apache2 下,這個(gè)模塊換名為 mod_deflate,對(duì)應(yīng)的模塊文件名是 mod_deflate.so。mod_gzip 本文不做介紹,下面描述一下在 Apache 2 下如何啟用并配置 mod_deflate 模塊。默認(rèn)安裝的 Apache 不管是 Windows 還是 Linux/Unix,都是不啟用該模塊的, Linux/Unix 下甚至不帶該模塊,你需要手工編譯這個(gè)模塊。

下面我們分別介紹在 Windows 和 Linux 操作系統(tǒng)下如何啟用并配置 mod_deflate 模塊。

在 Windows 下采用安裝程序安裝的 Apache 服務(wù)器已經(jīng)帶有 deflate 所需要的模塊 mod_deflate.so 和 mod_headers.so,我們只需要在 httpd.conf 配置文件中啟用并進(jìn)行相關(guān)的配置即可,配置如下:

LoadModule deflate_module modules/mod_deflate.soLoadModule headers_module modules/mod_headers.so<Location /># Insert filterSetOutputFilter DEFLATE# Netscape 4.x has some problems...BrowserMatch ^Mozilla/4 gzip-only-text/html# Netscape 4.06-4.08 have some more problemsBrowserMatch ^Mozilla/4\.0[678] no-gzip# MSIE masquerades as Netscape, but it is fine# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48# the above regex wont work. You can use the following# workaround to get the desired effect:BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html# Dont compress imagesSetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary# Make sure proxies dont deliver the wrong contentHeader append Vary User-Agent env=!dont-vary</Location>
而如果是 Linux/Unix 操作系統(tǒng),如果你沒有在編譯安裝的過程中將所需要的兩個(gè)模塊 mod_deflate 和 mod_headers 編譯進(jìn)去的話,那就稍微有點(diǎn)麻煩,首先我們先看如何在編譯安裝 Apache 過程中也同時(shí)編譯這兩個(gè)模塊,請(qǐng)?jiān)趫?zhí)行 configure 程序時(shí)增加兩個(gè)參數(shù)分別是: # ./configure --enable-deflate --enable-headers
這樣在編譯完 Apache 后就可以直接在 httpd.conf 中啟用并配置 deflate 模塊了,配置的方法跟 Windows 平臺(tái)下是相同的。

如果說您的 Apache 已經(jīng)在運(yùn)行了,不想再重新編譯一次,那也可以選擇只編譯 deflate 模塊所需的文件 mod_deflate.c 和 mod_headers.c。這兩個(gè)文件位于 {apache-src}/modules/filters/ 目錄下(其中 {apache-src} 為 apache 源文件所在的目錄)。使用如下命令來單獨(dú)編譯這兩個(gè)源文件。

# {apache-bin}/apxs -i -a -c {apache-src}/modules/filters/mod_deflate.c# {apache-bin}/apxs –i –a –c {apache-src}/modules/filters/mod_headers.c
其中 {apache-bin} 為 Apache 安裝目錄下的 bin 目錄,接下來在 httpd.conf 直接配置該模塊即可。

很多時(shí)候你在單獨(dú)編譯 deflate 模塊的時(shí)候可能會(huì)碰到編譯錯(cuò)誤,提示是:

Cannot load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate

解決的方法如下:

編輯 /usr/local/apache2/bin/apr-config 文件修改其中的 LDFLAGS 值為 "-lz",然后再重新編譯 mod_deflate 模塊,apxs -ica mod_deflate.c 即可。

為了省卻不必要的麻煩,請(qǐng)盡量在編譯安裝時(shí)直接加上 --enable-deflate --enable-headers 參數(shù)。

網(wǎng)頁(yè)名稱:利用壓縮網(wǎng)頁(yè)來提升網(wǎng)站瀏覽速度
網(wǎng)頁(yè)路徑:http://www.muchs.cn/news21/197471.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、靜態(tài)網(wǎng)站、定制網(wǎng)站網(wǎng)站維護(hù)、App開發(fā)、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)