2009-11-03 22 views
3

我想壓縮從我的應用程序使用apache deflate模塊發送的excel電子表格。我已將以下行添加到啓用了網站的文件中:使用Apache deflate模塊壓縮xls內容

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/excel 

但似乎會使響應數據變大?

使用firebug,沒有模塊我從應用程序下載了xls電子表格,它下載了100Kb的數據,文件系統上的一次文件大小也是100Kb。一旦我如上所述啓用了放氣模塊並重復該過程,下載的數據量爲295Kb ??但是一旦保存在文件系統上,文件仍然只有100Kb。

作爲一個實驗,我手動gzipped保存的xls文件,它壓縮到20Kb。

我在這裏做錯了什麼?

使用放氣(螢火蟲輸出):

200 OK xxxxxxx.co.za 293 KB 

4.43s 
ParamsHeadersPostPutResponseCacheHTML 
Response Headers 
Date Tue, 03 Nov 2009 13:01:43 GMT 
Server Apache/2.2.4 (Ubuntu) mod_jk/1.2.23 PHP/5.2.3-1ubuntu6.4 mod_ssl/2.2.4 OpenSSL/0.9.8e 
Content-Disposition attachment; filename="Employee List.xls" 
Vary Accept-Encoding 
Content-Encoding gzip 
Content-Type application/excel 

沒有放氣(螢火蟲輸出):

200 OK  xxxxxxxx.co.za 100 KB 

3.46s 
ParamsHeadersPostPutResponseCacheHTML 
Response Headers 
Date Tue, 03 Nov 2009 13:06:00 GMT 
Server Apache/2.2.4 (Ubuntu) mod_jk/1.2.23 PHP/5.2.3-1ubuntu6.4 mod_ssl/2.2.4 OpenSSL/0.9.8e 
Content-Disposition attachment; filename="Employee List.xls" 
Content-Length 102912 
Content-Type application/excel 
+0

gzip請求體是否實際上有效的gzip數據?你嘗試用'curl'進行調試嗎? – 2009-11-10 22:16:23

+0

我沒有使用捲曲,但如上所述,我可以手動gzip文件,它壓縮從100Kb到20Kb – 2009-11-11 11:17:35

回答

0

嘗試迫使最高的壓縮級別,並確保其他指令影響的壓縮比有合理的價值(詳見mod_deflate reference):

DeflateCompressionLevel 9 
DeflateBufferSize 8096 
DeflateMemLevel 9 
DeflateWindowSize 15 

同樣根據IANA,MS Excel內容類型應爲application/vnd.ms-excel,這也是我的安裝Apache/2.2.8(Ubuntu)在請求xls文件時返回的結果。所以你的Apache的行爲不一樣,有點奇怪。任何xls文件都會發生同樣的事情嗎?如果不是,那麼特定文件可能有問題。

這是一個很遠的鏡頭,但如果您將application/vnd.ms-excel添加到AddOutputFilterByType列表中,會發生什麼情況?

+0

我嘗試將MIME類型更改爲application/vnd.ms-excel,它只是忽略它(如果我沒有列出了MIME類型),所以沒有運氣 – 2009-11-11 11:16:04

+0

編輯:mod_deflate指令調整 – 2009-11-12 12:29:31

+0

順便說一句,你有機會通過代理訪問你的Apache? – 2009-11-12 12:31:16

相關問題