Deflate Compression、Apache (htaccess)、および CSS ファイルに関連する非常に興味深い問題があります。
サーバーに 2 つの CSS ファイルがあります。1 つは styles.php と呼ばれ、データベースの値に基づいて、styles/ ディレクトリの mod_rewrite によって動的な値が追加されます (styles.php から site.css に書き換えられ、ファイルの先頭に text/css ヘッダーがあります)。また、styles.css と呼ばれる同じディレクトリに、変更されない静的コンテンツを含む通常の古い css ファイルもあります。
サイトに圧縮を追加したかったので、次の行を追加して、css ファイルと js ファイルの圧縮を開始しました。これを自分の Web サイトの root_directory に追加しました。
<ifModule mod_deflate.c>
<filesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
まあ、最初はうまくいきませんでした。そこで、ルート htaccess ファイルのこの行を、これから次のものに変更しました。(以下のコードはファイルの先頭にあります)
AddType application/x-httpd-php5 .html .php
AddType application/x-httpd-php5 .html .php .js .css
次に、私の js ファイルと css ファイルの 1 つが圧縮され始めました (YSlow で検証済みです.....やった!)。奇妙なことに、書き換えられていた css ファイル (styles.php ファイル) は圧縮されていましたが、styles.css ファイル (静的ファイル) はブラウザーによって読み取られなくなりました。その AddType 行から「.css」を削除するとすぐに、ブラウザはファイルの読み取りを再開し、css は正常に戻りましたが、Apache で圧縮されなくなりました。
タイプを追加すると、静的 css ファイルがブラウザーによって読み取られない理由について何か考えはありますか? .css の代わりに text/css だけで試してみましたが、ファイルは圧縮されませんでした (ただし、ブラウザーはそれを解釈しました)。
アップデート:
これをルートのhtaccessファイルに追加しました。私たちは今、甘さを圧縮し、解釈しました。
<filesMatch "\.css$">
FileETag None
<ifModule mod_headers.c>
Header set Content-type "text/css"
</ifModule>
</filesMatch>