5

サイトで事前に圧縮された CSS および JS ファイルを提供しており、IE6-8 および FF は私の .htaccess ファイルで完全に動作しています。

# 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" />

では、なぜこれが Google Chrome で壊れるのでしょうか?

ありがとう。

4

7 に答える 7

3

.htaccessファイル(圧縮されたJavaScriptを含む.jszファイルがあり、Chromeはそれらを正常に処理します):

AddEncoding gzip .jsz
AddType text/javascript .jsz
于 2009-06-26T04:55:39.410 に答える
3

Fiddlerをダウンロードし、生の応答ヘッダーを調べて、その特定の要求に対してサーバーが何を送り返しているかを確認します。

参考までに、Fiddler は、ブラウザのリクエストをフィルタリングするクライアント側のプロキシです。この種の問題に対処する際に非常に有益です。

- アップデート

さらに調査すると、 RewriteCond が実際にあなたが思っていることをしているようには見えません。Documentationによると、RewriteCond ディレクティブは RewriteRule と組み合わせてのみ使用されます。

于 2009-06-08T00:14:53.160 に答える
3
  1. Content-Encoding: gzip応答ヘッダーを使用する必要があります。
  2. Accept-EncodingクライアントのヘッダーでGZIPが許可されている場合にのみ、GZIP 圧縮コンテンツを返す必要があります。
于 2009-06-26T04:43:06.440 に答える
3

圧縮ファイルの拡張子が .gz の場合、Safari (および Google Chrome) は動作しません。

Safari および Chrome で gzip アーカイブをサポートするには、.css および .js ファイルをコピーして gzip に圧縮し、拡張子を .jgz に付けて名前を変更します (例: 前 - 1 つのファイル style.css をディレクトリに移動後 - 2 つのファイル、style .css と style.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 で動作しています)

于 2012-04-09T10:54:02.950 に答える
1

私は同様の質問に、いつ Gzip するかについて、より保守的な一致ルールで答えました。

Safari、Chrome、および IE6 はすべて、Gzip 形式のダウンロードに問題があります。また、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

元の投稿を参照してください: .htaccess ファイルで Safari や他のブラウザーが GZIP を開くことができるようにするにはどうすればよいですか?

于 2009-08-07T20:48:08.427 に答える
0

Content-Encodingヘッダー フィールドを設定して、応答データが gzip でエンコードされていることをクライアントに伝えるだけで済みます。

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

しかし残念なことに、Apache はそのヘッダー フィールドを設定することを許可していません。代わりContent-Encodingに になりX-Content-Encodingます。

于 2009-06-16T08:09:43.497 に答える
-2

Google Chrome(およびApple Safari)は、gzipで圧縮されたCSSおよびJavaScriptをサポートしていません。特定のIE6バージョンにも問題があります。これらはgzip圧縮されたHTMLドキュメントをサポートしますが、CSSとJavaScriptはサポートしません。

于 2009-06-08T07:31:43.813 に答える