2015-06-17 90 views
0

我使用預分解的gzip CSS和JS文件,以便服務器不會在運行中執行此操作。Apache設置將gzip CSS/JS文件發送到瀏覽器

所以在同一個文件夾我有file.css(gzipped版本),file.nozip.css(nogzipped版本)。然後根據瀏覽器是否接受gzip文件,發送正確的版本。

所以我在.htaccess如下:

RewriteEngine On 

RewriteRule ^(.*)\.[0-9]+\.css$ $1.css [L] 

#redirect Konqueror and "old browsers" 
RewriteCond %{REQUEST_FILENAME} !\.nogzip\.css$ 
RewriteCond %{HTTP:Accept-encoding} !gzip [OR] 
RewriteCond %{HTTP_USER_AGENT} Konqueror 
RewriteRule ^(.*)\.css$ $1.nogzip.css [L] 

<IfModule mod_headers.c> 
    Header set Vary User-Agent 
#set Content-Encoding for all css files 
    <FilesMatch .*\.css$> 
    Header set Content-Encoding: gzip 
    Header set Cache-control: private 
    </FilesMatch> 
#drop Content-Encoding in case we send not gzipped file 
    <FilesMatch .*\.nogzip\.css$> 
    Header unset Content-Encoding 
    </FilesMatch> 
</IfModule> 

<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresDefault A36000000 
</IfModule> 

這種方法我都用在Windows上,很多次,以及在Linux服務器上。總是工作得很好。

但是,最近在開發另一個網站時,我遇到了瀏覽器無法識別gzip文件的問題。

在localhost工作,這裏是響應頭:

Accept-Ranges:bytes 
Cache-control:private 
Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Length:39115 
Content-Type:text/css 
Date:Wed, 17 Jun 2015 11:27:28 GMT 
ETag:"98cb-517998d9e690c" 
Keep-Alive:timeout=5, max=100 
Last-Modified:Wed, 03 Jun 2015 09:19:16 GMT 
Server:Apache/2.4.12 (Win64) OpenSSL/1.0.1m PHP/5.6.9 
Vary:User-Agent 
X-Distributed-by:AHC 

這是從生產服務器接收到的報頭(不工作 - 在瀏覽器拉鍊顯示css文件):

Accept-Ranges:bytes 
Cache-control:private 
Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Length:39099 
Content-Type:text/css 
Date:Wed, 17 Jun 2015 11:30:08 GMT 
ETag:"98cb-517998d8fcd00-gzip" 
Keep-Alive:timeout=5, max=99 
Last-Modified:Wed, 03 Jun 2015 09:19:16 GMT 
Server:Apache/2.4.10 (Debian) 
Vary:User-Agent 

唯一的區別是「X-Distributed-by:AHC」,但這很難成爲問題的原因。

任何想法還有什麼要檢查?

+0

我有同樣的問題。你解決了這個問題嗎? –

回答

1

在案例2中,它強烈地暗示mod_deflate模塊壓縮它的飛行由於ETAG:

ETag:"98cb-517998d8fcd00-gzip" 

也許這將是最好的設置無gzip的用於例如konqueror案件?

+0

所以它gzip已經gzipped內容?這也是我的想法,我按照以下方式進行了檢查 - 我保存了內容並解壓縮了文件並獲得了非壓縮版本,因此看起來像壓縮只應用了一次,這是可以的。 我可以通過添加「頭文件集內容編碼:gzip」來解決這個問題,它解決了向瀏覽器發送gzip版本的問題,但是「頭文件未設置內容編碼」不解決這個問題, gzip文件被髮送,你能詳細解釋你的建議嗎? – Volder

相關問題