欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

<-
Apache > HTTP Server > 文檔 > 版本2.2 > 模塊
   致謝 | 譯者聲明 | 本篇譯者:金步國 | 本篇譯稿最后更新:2006年1月25日 | 獲取最新版本

Apache模塊 mod_deflate

說明壓縮發(fā)送給客戶端的內(nèi)容
狀態(tài)擴展(E)
模塊名deflate_module
源文件mod_deflate.c

概述

mod_deflate模塊提供了DEFLATE輸出過濾器,允許服務器在將輸出內(nèi)容發(fā)送到客戶端以前進行壓縮,以節(jié)約帶寬。

top

配置舉例

這是一個針對心急者的示范配置:

僅僅壓縮少數(shù)幾種類型

AddOutputFilterByType DEFLATE text/html text/plain text/xml

以下允許壓縮更多內(nèi)容的配置更加復雜。除非你明白所有的配置細節(jié),否則請不要使用。

Compress everything except images

<Location />
# 插入過濾器
SetOutputFilter DEFLATE

# Netscape 4.x 有一些問題...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 有更多的問題
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE 會偽裝成 Netscape ,但是事實上它沒有問題
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# 不壓縮圖片
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

# 確保代理不會發(fā)送錯誤的內(nèi)容
Header append Vary User-Agent env=!dont-vary
</Location>

top

啟用壓縮

輸出壓縮

壓縮是由DEFLATE過濾器實現(xiàn)的。下面的指令會對其所在容器中的文檔啟用壓縮:

SetOutputFilter DEFLATE

一些流行的瀏覽器不能正確處理所有壓縮內(nèi)容,因此你可能需要將gzip-only-text/html標記設為"1"來僅僅允許壓縮html文件(見下面)。如果你設置了"1"以外的任何值,都將被忽略。

如果你想將壓縮限制在幾種特定的MIME類型上,可以使用AddOutputFilterByType指令。下面的例子僅僅允許對html文檔進行壓縮:

<Directory "/your-server-root/manual">
AddOutputFilterByType DEFLATE text/html
</Directory>

對于那些不能正確處理所有壓縮內(nèi)容的瀏覽器,可以使用BrowserMatch指令針對特定的瀏覽器設置no-gzip標記以取消壓縮。為了取得更好的效果,你可以將no-gzipgzip-only-text/html配合使用。在這種情況下,下面的設置將會覆蓋上面的設置?纯磸配置示例中摘錄的片斷:

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

第一條指令表示如果User-Agent字符串表示它是一個Navigator 4.x的瀏覽器,這種瀏覽器不能正確處理除text/html之外的所有類型。而4.06, 4.07, 4.08版的Navigator完全不能處理任何壓縮內(nèi)容,因此第二條指令對這些瀏覽器完全禁用壓縮。

第三個BrowserMatch指令修正了上面兩條對瀏覽器的推測,因為微軟的IE也將它自己標識成"Mozilla/4"但是它實際上能夠處理所有的壓縮內(nèi)容。因此又在User-Agent頭中額外匹配了字符串"MSIE"("\b"表示"單詞邊界"),并且取消了前面的限制。

注意

DEFLATE過濾器總是在類似于PHP或SSI之類的資源過濾器之后插入,它永遠不會觸及到內(nèi)部請求。

注意

通過SetEnv設置force-gzip環(huán)境變量將會忽略瀏覽器的"accept-encoding",始終發(fā)送經(jīng)過壓縮的內(nèi)容。

輸出解壓

mod_deflate模塊還提供了一個解壓gzip格式的應答體的功能。為了激活這個特性你必須使用SetOutputFilterAddOutputFilter指令將INFLATE過濾器插入到輸入過濾器鏈:

<Location /dav-area>
ProxyPass http://example.com/
SetOutputFilter INFLATE
</Location>

這個例子將會解壓來自example.com的輸出,這樣其它過濾器就可以做進一步的處理了。

輸入解壓

mod_deflate模塊還提供了一個解壓gzip格式的請求體的功能。為了激活這個特性你必須使用SetInputFilterAddInputFilter指令將DEFLATE過濾器插入到輸入過濾器鏈。例如:

<Location /dav-area>
SetInputFilter DEFLATE
</Location>

這樣,如果包含"Content-Encoding: gzip"頭的請求體將會被自動解壓。極少有瀏覽器壓縮請求體。然而有些程序的確這么做了,比如一些WebDAV客戶端程序。

注意 Content-Length

如果你自己處理請求體,請注意Content-Length頭僅僅表示客戶端輸入的數(shù)據(jù)長度,而不是解壓后的實際數(shù)據(jù)長度。

top

代理服務器

mod_deflate模塊發(fā)送一個"Vary: Accept-Encoding"HTTP應答頭以提醒代理服務器:只對發(fā)送了正確"Accept-Encoding"頭的客戶端發(fā)送緩存的應答。這樣可以防止不能正確處理壓縮內(nèi)容的瀏覽器接受到經(jīng)過壓縮的內(nèi)容。

如果你按照某些特殊的條件拒絕了某些客戶端的訪問(比如User-Agent頭),你必須手動配置一個額外的Vary頭提醒代理服務器做額外的限制。比如,在一個典型的配置中的某處,如果額外的DEFLATE過濾器是否生效取決于User-Agent頭,你應當在此處添加:

Header append Vary User-Agent

如果依照除請求頭以外的其他條件決定是否使用壓縮(例如:HTTP版本),你必須設置Vary頭的值為"*"來完全阻止代理服務器的緩存。

示例

Header set Vary *

top

DeflateBufferSize 指令

說明用于zlib一次壓縮的片斷大小(字節(jié))
語法DeflateBufferSize value
默認值DeflateBufferSize 8096
作用域server config, virtual host
狀態(tài)擴展(E)
模塊mod_deflate

DeflateBufferSize指令定義了zlib一次壓縮的片斷的字節(jié)數(shù)。

top

DeflateCompressionLevel 指令

說明將輸出內(nèi)容壓縮的程度
語法DeflateCompressionLevel value
默認值Zlib的默認值
作用域server config, virtual host
狀態(tài)擴展(E)
模塊mod_deflate
兼容性僅在 Apache 2.0.45 及以后的版本中可用

DeflateCompressionLevel指令設置壓縮程度,越高的壓縮程度就會有越好的壓縮效果,同時也意味著占用越多的CPU資源。

取值范圍在 1(最低壓縮率) 到 9(最高壓縮率)之間。

top

DeflateFilterNote 指令

說明在日志中放置壓縮率標記
語法DeflateFilterNote [type] notename
作用域server config, virtual host
狀態(tài)擴展(E)
模塊mod_deflate
兼容性type僅在2.0.45以后版本中可用

DeflateFilterNote指令指定將一個指示壓縮率的標記附加在請求之后。notename就表示這個標記的名字。你可以為了某種統(tǒng)計目的將這個標記的名字添加到訪問日志中。

示例

DeflateFilterNote ratio

LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
CustomLog logs/deflate_log deflate

如果你想從日志中得到更多精確的數(shù)據(jù),可以使用type參數(shù)指定notename標記所記錄的數(shù)據(jù)類型。type的取值范圍如下:

Input
在標記中存儲過濾器輸入流的字節(jié)數(shù)。
Output
在標記中存儲過濾器輸出流的字節(jié)數(shù)。
Ratio
在標記中存儲過濾器的壓縮比(輸出/輸入*100)。這是type的默認值。

于是,就可以這樣記錄:

Accurate Logging

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate

參見

top

DeflateMemLevel 指令

說明zlib在壓縮時最多可以使用多少內(nèi)存
語法DeflateMemLevel value
默認值DeflateMemLevel 9
作用域server config, virtual host
狀態(tài)擴展(E)
模塊mod_deflate

DeflateMemLevel指令指定zlib在壓縮時最多可以使用多少內(nèi)存(取值范圍在1到9之間)。

top

DeflateWindowSize 指令

說明Zlib壓縮窗口(compression window)的大小
語法DeflateWindowSize value
默認值DeflateWindowSize 15
作用域server config, virtual host
狀態(tài)擴展(E)
模塊mod_deflate

DeflateWindowSize指令設定zlib壓縮窗口(compression window)的大小(取值范圍在1到15之間)。通常窗口越大壓縮效果越好。