2009-06-07 17 views
4

我在我的網站上提供了預壓縮的CSS和JS文件,IE6-8和FF 與我的.htaccess文件完美配合。在Chrome上預壓縮gzip中斷,爲什麼?

# Compressed files 
RewriteCond %{HTTP:Accept-Encoding} .*gzip.* 
AddEncoding x-gzip .gz 
AddType application/x-javascript .gz 
AddType text/css .gz 

我所說的文件具有.gz擴展名已經【示例】:

<link rel="stylesheet" type="text/css" media="all" href="css/layout.css.gz" /> 

那麼,爲什麼這打破了谷歌Chrome瀏覽器?

謝謝。

+0

了這曾經回答過? – 2012-05-18 20:22:18

回答

3

下載Fiddler並查看原始響應標頭,以查看服務器針對該特定請求發回的內容。

僅供參考,Fiddler是一個客戶端代理,用於過濾您的瀏覽器請求。處理這些問題時提供超級信息。

- 更新

經進一步調查,它不會出現你的RewriteCond實際上是做你覺得它在做什麼。根據Documentation,RewriteCond指令僅與RewriteRule結合使用。

-2

Google Chrome(和Apple Safari)不支持gzip壓縮的CSS和JavaScript。某些IE6版本也有問題。 他們支持gzip壓縮的HTML文檔,但不支持CSS和JavaScript。

+0

如何過濾那些不支持我的htaccess文件的人? – vsync 2009-06-08 08:51:17

+0

您不應直接從您的HTML鏈接到.gz文件。您可以使用mod_rewrite或(甚至更好)mod_negotiation,而是發送gzip壓縮文件。 – elmuerte 2009-06-09 08:24:12

+0

或只是衣壓縮它們,這將給你有效的JS和可比壓縮節省 – annakata 2009-06-16 08:15:02

0

你只需要設置Content-Encoding頭字段告訴客戶端,該響應數據進行編碼用gzip:

<FilesMatch "\.gz$"> 
    Header set Content-Encoding gzip 
</FilesMatch> 

但不幸的是阿帕奇不允許設置頭字段。相反,Content-Encoding將變爲X-Content-Encoding

1
  1. 您必須使用Content-Encoding: gzip響應標頭。
  2. 當客戶端的Accept-Encoding標頭允許GZIP時,您只能返回GZIP壓縮內容。
2

我們的.htaccess文件(我們有壓縮的javascript .jsz文件和Chrome處理這些罰款):

AddEncoding gzip .jsz 
AddType text/javascript .jsz 
1

我回答過類似的問題,採用更加保守的匹配規則時,Gzip已:

Safari,Chrome和IE6都有 與Gzipped下載問題。另外, Apache會爲你做gzip壓縮 ,不需要手動 gzip文件。試試這個片斷:

# This uses mod_deflate, which is pretty standard on Apache 2. Loading 
# mod_deflate looks like this: 
# 
# LoadModule deflate_module modules/mod_deflate.so 
# 
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript 
BrowserMatch ^Mozilla/4 gzip-only-text/html 
BrowserMatch ^Mozilla/4\.0[678] no-gzip 
BrowserMatch \\bMSIE !no-gzip !gzip-only-text/html 

查看原帖:How can I make my .htaccess file allow Safari & other browsers to open GZIP?

3

Safari瀏覽器(和谷歌Chrome),如果他們擴展名爲.gz

爲了支持gzip歸檔與壓縮文件不`噸工作在Safari和Chrome,複製和壓縮.css和.js文件gzip格式,並重新命名他們的擴展上.jgz (例如加上.gz: 前 - 一個文件style.css中到後目錄 - 兩個文件,風格。 CSS和風格。 css.jgz進入目錄)

,並將此代碼到你的.htaccess文件:

AddEncoding gzip .jgz 
RewriteCond %{HTTP:Accept-encoding} gzip 
# RewriteCond %{HTTP_USER_AGENT} !Safari 
RewriteCond %{HTTP_USER_AGENT} !Konqueror 
RewriteCond %{REQUEST_FILENAME}.jgz -f 
RewriteRule ^(.*)$ $1.jgz [QSA,L] 

<IfModule mod_headers.c> 
    Header append Vary User-Agent 
    <FilesMatch .*\.js.jgz$> 
    ForceType text/javascript 
    Header append Vary Accept-Encoding 
    Header set Content-Encoding: gzip 
    Header set Cache-control: private 
    </FilesMatch> 
    <FilesMatch .*\.css.jgz$> 
    ForceType text/css 
    Header append Vary Accept-Encoding 
    Header set Content-Encoding: gzip 
    Header set Cache-control: private 
    </FilesMatch> 
</IfModule> 

例如megaburg.ru 測試 - 正在與Safari瀏覽器,Chrome瀏覽器,Opera和Firefox 8)