標籤:
HTTP協議實現伺服器瀏覽器代碼文本壓縮
一般我們在對網站進行最佳化是,一定會用到的一個就是文本代碼壓縮,我們壓縮的一般都是文字格式設定檔案,因為壓縮效果明顯,若果對視頻等進行壓縮,效果不大,並且耗費伺服器和用戶端的CPU來進行壓縮和解壓,得不償失。
廢話多多說,我們上網是,使用瀏覽器F12來進行代碼調試抓包時,:
上面:深色顯示的Accpet-Encoding就是我們用戶端發送給伺服器,告訴伺服器我們所支援的壓縮格式,每個瀏覽器所支援的格式不一樣。
廢話不多說,如何?伺服器壓縮呢?
主要分為兩步:
第一步:在Apache的伺服器中http.conf中開啟mod_deflate.so 模組,即使用deflate壓縮格式,如果支援,伺服器也可以選擇開始gzip等壓縮格式。
目前我們比較常見的有:gzip,deflate,compress以及Google的sdch格式
LoadModule deflate_module modules/mod_deflate.so
然後重啟 httpd –k restart
第二步:在http.conf中添加一下代碼,即告訴伺服器對那些代碼進行壓縮,並且指定壓縮層級
<ifmodule mod_deflate.c> #如果開啟了mod_deflate模組,則運行下面代碼
DeflateCompressionLevel 6 #壓縮層級為6 ,一般支援 1-9,數字越高,壓縮層級越大
AddOutputFilterByType DEFLATE text/plain #對文字檔代碼進行壓縮
AddOutputFilterByType DEFLATE text/html #對html檔案代碼進行壓縮
AddOutputFilterByType DEFLATE text/xml #對xml檔案代碼進行壓縮
AddOutputFilterByType DEFLATE text/css #對css檔案代碼進行壓縮
AddOutputFilterByType DEFLATE text/javascript #對指令檔代碼進行壓縮
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
</ifmodule>
基本的都介紹完了,下面我們來做實驗看效果:
未開啟伺服器壓縮:
,展示的是當我們的網站頁面未進行壓縮時,請求伺服器返回的原始碼檔案大小為
Content-Length = 208 位元組(注意圖,等下和進行對比)
開啟伺服器壓縮後:
和上面的對比,我們發現,此時,相同的一個網頁,請求伺服器返回的代碼檔案大小為
Content-Length = 148 位元組,節省了60個位元組的大小,效果是很驚人的
特別注意瀏覽器返回的資訊中還特別說明了壓縮格式
Content-Encoding:gzip 告訴用戶端使用的是gzip格式的壓縮方式
在比較大型的門戶網站中,對代碼進行壓縮,可以省去大量的網站流量,節省大量的伺服器資源,效果不可想象
小技巧:
當我們學習使用時,我們可以不發送Accpet-Encoding來採集未壓縮的原始碼。
HTTP協議實現伺服器瀏覽器代碼文本壓縮