0

サーバーがその場でこれを行わないように、事前に構成された gzip 圧縮された CSS および JS ファイルを使用します。

したがって、同じフォルダーにfile.css(gzipバージョン)、file.nozip.css(nogzipバージョン)があります。次に、ブラウザが 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 されたファイルを 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」ですが、これが問題の原因になることはほとんどありません。

他に何をチェックするべきか?

4

1 に答える 1

1

ケース 2 では、etag により、mod_deflate がオンザフライで圧縮したことを強く示唆しています。

ETag:"98cb-517998d8fcd00-gzip"

konqueror の場合などには、no-gzip を設定するのが最善ではないでしょうか?

于 2015-06-18T16:13:57.187 に答える