web-dev-qa-db-ja.com

.htaccessによるGzip圧縮が機能しない

私はサイトを作成し、その速度をgtmetrix.comで確認しています。次の.htaccessファイルを使用して、.js, .cssおよびその他の多くのファイルを圧縮しました。

<ifModule mod_gzip.c>
  mod_gzip_on Yes
  mod_gzip_dechunk Yes
  mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
  mod_gzip_item_include handler ^cgi-script$
  mod_gzip_item_include mime ^text/.*
  mod_gzip_item_include mime ^application/x-javascript.*
  mod_gzip_item_exclude mime ^image/.*
  mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

Options Indexes
IndexOptions FancyIndexing

ExpiresActive On
ExpiresDefault "access plus 7 days"
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/javascript A2592000
ExpiresByType text/html A2592000
ExpiresByType text/xml A2592000
ExpiresByType text/css A2592000
ExpiresByType text/plain A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/bmp A2592000
ExpiresByType application/x-shockwave-flash A2592000

<FilesMatch "\.(html?|txt)$">
  ForceType 'text/html; charset=UTF-8'
</FilesMatch>

<FilesMatch "\.(css)$">
  ForceType 'text/css; charset=UTF-8'
</FilesMatch>

<FilesMatch "\.(js)$">
  ForceType 'text/javascript; charset=UTF-8'
</FilesMatch>

<FilesMatch "\.(css|js)$">
  Header append Vary Accept-Encoding
</FilesMatch>

しかし、ページテストを実行すると、次のように表示されます-----

Compressing the following resources with gzip could reduce their transfer size by 882B (48% reduction).

Compressing http://wooflux.co.cc/ could save 645B (48% reduction).
Compressing http://wooflux.co.cc/style.css could save 237B (51% reduction).

しかし、.htaccessファイルに対してgzip圧縮を実行しました。私はここで何が間違っているのかはわかりません。ちなみに、私はこのコーディングスタイルに非常に慣れていません。エラーが発生したかどうかをお知らせください。

14
Jack Billy

Mod_gzipを使用したことはありませんが、mod_deflateを介して.js、.css、その他のファイルをgzipで圧縮するために使用する.htaccessは次のとおりです。

#Gzip
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x- javascript application/javascript
</ifmodule>
#End Gzip

まだ気付いていない場合は、 Firebug は、ダウンロードしたコンテンツがgzipで圧縮されているかどうかを確認するのに非常に役立ちます。 Firebugの[ネット]タブをクリックし、shift-f5を実行して、Firefoxにすべての.jsファイルと.cssファイルをリロードさせ、ネットパネルに表示されるようにします。 .jsまたは.cssファイルの横にある[+]をクリックし、[ヘッダー]タブをクリックします。応答がgzipで圧縮されている場合は、[応答ヘッダー]セクションに「Content-Encodinggzip」と表示されます。私はIE、Safariをイメージしていますが、Chrome同等のものは同じ機能を提供します。

IE6での.jsファイルと.cssファイルのgzippingに関する1つの落とし穴 注意が必要です。 IE6SP1ユーザーにのみ適用できると思います。

31
Mark Foster

ファイル拡張子で使用する構文は次のとおりです。

<IFModule mod_deflate.c>
    <filesmatch "\.(js|css|html|jpg|png|php)$">
        SetOutputFilter DEFLATE
    </filesmatch>
</IFModule>
7
Hamed Momeni

私の場合、mod_gzipまたはmod_deflateを有効にして、htaccessファイルに書き込んだ後でも機能しませんでした。

その後、phpファイルで「ob_gzhandler」を使用することになりました。これは、phpファイルとhtmlファイルを圧縮するのに役立ちました。これはmod_gzipやmod_deflateほど良くはありませんが、他の運が得られない場合に備えて一時的に役立ちます。

何かをロードする前に、上部のindex.phpファイルで使用したコードは次のとおりです。

<? ob_start("ob_gzhandler"); ?>
2
Nijesh Hirpara