web-dev-qa-db-ja.com

Apache gzip圧縮を機能させるにはどうすればよいですか?

サイトでgzip圧縮を使用できません。

最近、これをcss-tricks.comでChris Coyierが video で見ました。ビデオでは、gzip圧縮を有効にしてWebサイトをより高速に実行する方法について説明しています。

彼の指示に従って、html5boilerplate.com経由でgithubにリンクし、.htaccessファイルからgzip圧縮コードをコピーし、自分のサイトに貼り付けて、サイトにアップロードしました。

私はgzipwtf.comを介してテストしましたが、動作しないようです。誰でもこれで私を助けることができますか?

私の.htaccessファイルは次のようになります。

# ----------------------------------------------------------------------
# Trim www
# ----------------------------------------------------------------------

RewriteEngine On
RewriteCond %{HTTP_Host} !^orbitprint.com$ [NC]
RewriteRule ^(.*)$ http://orbitprint.com/$1 [L,R=301]

# ----------------------------------------------------------------------
# Gzip compression
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

  # Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  <IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
      SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
      RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
    </IfModule>
  </IfModule>

  # Compress all output labeled with one of the following MIME-types
  <IfModule mod_filter.c>
    AddOutputFilterByType DEFLATE application/atom+xml \
                                  application/javascript \
                                  application/json \
                                  application/rss+xml \
                                  application/vnd.ms-fontobject \
                                  application/x-font-ttf \
                                  application/xhtml+xml \
                                  application/xml \
                                  font/opentype \
                                  image/svg+xml \
                                  image/x-icon \
                                  text/css \
                                  text/html \
                                  text/plain \
                                  text/x-component \
                                  text/xml
  </IfModule>

</IfModule>
54
dai.hop

これを試して :

####################
# GZIP COMPRESSION #
####################
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
91
Oussama

以下のスニペットのように実装することをお勧めします。

以下のコンテンツを.htaccessファイルに貼り付けてから、 Google PageSpeedPingdom Tools および GTmetrics を使用してパフォーマンスを確認します。

# Enable GZIP
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</ifmodule>

# Expires Headers - 2678400s = 31 days
<ifmodule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 7200 seconds"
  ExpiresByType image/gif "access plus 2678400 seconds"
  ExpiresByType image/jpeg "access plus 2678400 seconds"
  ExpiresByType image/png "access plus 2678400 seconds"
  ExpiresByType text/css "access plus 518400 seconds"
  ExpiresByType text/javascript "access plus 2678400 seconds"
  ExpiresByType application/x-javascript "access plus 2678400 seconds"
</ifmodule>

# Cache Headers
<ifmodule mod_headers.c>
  # Cache specified files for 31 days
  <filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
  Header set Cache-Control "max-age=2678400, public"
  </filesmatch>
  # Cache HTML files for a couple hours
  <filesmatch "\.(html|htm)$">
  Header set Cache-Control "max-age=7200, private, must-revalidate"
  </filesmatch>
  # Cache PDFs for a day
  <filesmatch "\.(pdf)$">
  Header set Cache-Control "max-age=86400, public"
  </filesmatch>
  # Cache Javascripts for 31 days
  <filesmatch "\.(js)$">
  Header set Cache-Control "max-age=2678400, private"
  </filesmatch>
</ifmodule>
36
Umut D.

.htaccessは正常に実行されるはずです。 4つの異なるApacheモジュールに依存します(各<IfModule>ディレクティブごとに1つ)。次のいずれかを推測します。

  • apacheサーバーにmod_filter、mod_deflate、mod_headers、mod_setenvifのいずれかのモジュールがインストールされて実行されていない。サーバー構成にアクセスできる場合は、/etc/Apache2/httpd.conf(および関連するApache構成ファイル)を確認してください。そうでない場合、Apache2handlerセクションの下のphpinfo()を介してどのモジュールがロードされているかを確認できます(添付画像を参照)。 (EDIT)または、ターミナルウィンドウを開いて、ロードされたモジュールを一覧表示するSudo apachectl -Mコマンドを発行できます。

  • http 500内部サーバーエラーが発生した場合、サーバーは.htaccessファイルの使用を許可されていない可能性があります。

  • 独自のヘッダーを送信する(Apacheのヘッダーを上書きする)PHPファイルをロードしようとしているため、ブラウザーが「混乱」しています。

いずれの場合も、サーバー構成およびエラーログを再確認して、問題の原因を確認する必要があります。念のため、Apache docsで提案されている here の最速の方法を試してください。

AddOutputFilterByType DEFLATE text/html text/plain text/xml

次に、大きなテキストファイルをロードしてみてください(最初にキャッシュを消去することをお勧めします)。

EDIT)必要なモジュールが(Apacheモジュールdirに)あるがロードされていない場合は、/ etc/Apache2/httpdを編集するだけです.confを追加し、それぞれに LoadModule ディレクティブを追加します。

必要なモジュールが存在しない場合(ロードされていないか、Apacheモジュールディレクトリにない場合)、Apache(完全版)を再インストールすることしか選択肢がないと思います。

phpinfo() Apache2handler section

10
Paolo Stefan

まず最初にApache/bin/conf/httpd.confに移動にして、mod_deflate.soが有効になっていることを確認します。

次に、。htaccessファイルに移動して、次の行を追加します。

SetOutputFilter DEFLATE

これにより、gzip圧縮された状態で提供されるすべてのコンテンツが出力されるはずです。試してみましたが、動作します。

7
nrvarun

WebホストがCパネルを介している場合Apache CパネルでG Zip圧縮を有効にします

CPanelに移動し、ソフトウェアタブを確認します。

以前は、Webサイトの最適化が機能していましたが、新しいオプション、つまり「MultiPHP INI Editor」が利用可能になりました。

圧縮するドメイン名を選択します。

Zip出力圧縮が見つかるまで下にスクロールして有効にします。

次に、G Zip圧縮をもう一度確認します。

ビデオチュートリアルもご覧ください。 https://www.youtube.com/watch?v=o0UDmcpGlZI

2
Shree Sthapit

私の場合、Apache Webサーバーでgzip圧縮を有効にするために次のコードを使用しました。

  # Compress HTML File, CSS File, JavaScript File, Text File, XML File and Fonts
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/json
    AddOutputFilterByType DEFLATE application/x-httpd-php
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE font/otf
    AddOutputFilterByType DEFLATE font/ttf

http://www.tutsway.com/enable-gzip-compression-using-htacess.php から参照を取得しました。

2
Manish

同じ.htaccess構成を使用してこの問題を実行します。サーバーがtext/javascriptではなくapplication/javascriptとしてjavascriptファイルを提供していることに気付きました。 text/javascriptAddOutputFilterByType宣言に追加すると、gzipが機能し始めました。

Javascriptがtext/javascriptとして提供された理由について:ルートの.htaccessファイルの先頭にAddType 'text/javascript' js宣言がありました。削除した後(エラーで追加されていた)、javascriptはapplication/javascriptとして機能し始めます。

2
Ryan Fitzer
<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>

<IfModule mod_deflate.c>
# Insert filters
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml

# Drop problematic browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
1
DevWL

私の場合、この行のみを追加しました

SetOutputFilter DEFLATE

1
Raugaral

。htaccessによる圧縮を有効にします

これを読んでいるほとんどの人にとって、圧縮はWebホスト/サーバー上の.htaccessというファイルにコードを追加することで有効になります。これは、ウェブホスト上のファイルマネージャー(またはファイルを追加またはアップロードする場所)に移動することを意味します。

.htaccessファイルは、サイトの多くの重要な要素を制御します。

以下のコードを.htaccessファイルに追加する必要があります...

<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>

.htaccessファイルを保存してから、Webページを更新します。

Gzip圧縮ツール を使用して、圧縮が機能しているかどうかを確認します。

1
Amuk Saxena