gzip や deflate を使用してリソースを圧縮することで、ネットワークで送信されるバイト数を減らすことができます。

Apache

4案

 状態:-  閲覧数:872  投稿日:2017-08-22  更新日:2017-08-22
A.圧縮と解凍はその都度自動対応
・1.「.htaccess」で設定
・2.「http.conf」で設定

B.gzipファイルを事前に用意
・3.「.htaccess」で設定
・4.「http.conf」で設定



具体例

 閲覧数:129 投稿日:2017-08-22 更新日:2017-08-24 

A1.圧縮と解凍はその都度自動対応。「.htaccess」で設定


gzip 圧縮によるサイトパフォーマンスを向上させる方法
▼.htaccess
# mod_deflate を有効にする
SetOutputFilter DEFLATE

# レガシーブラウザは gzip 圧縮を行わない
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# 画像ファイルはgzip圧縮を行わない
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary

# プロキシサーバ用の設定
Header append Vary User-Agent env=!dont-vary


改行削除するくらいなら gzip したらいいじゃない
▼.htaccess
<ifModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI _\.utxt$ no-gzip
</ifModule>


gzip圧縮でCSSやJSなどの転送量を減らす方法
▼.htaccess
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary


mod_deflate - Apache HTTP サーバ
・画像以外全て圧縮する
▼.htaccess
<Location />
# Insert filter
SetOutputFilter DEFLATE

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

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


Apacheのmod_deflateでコンテンツを圧縮してサイトを高速化する方法
▼.htaccess
<IfModule mod_deflate.c>
    # mod_deflate を有効にする
    SetOutputFilter DEFLATE

    # Mozilla4系などの古いブラウザで無効、しかしMSIEは除外
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

    # gifやjpgなど圧縮済みのコンテンツは再圧縮しない
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI _\.utxt$ no-gzip

    # htmlやcssなどは圧縮
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom_xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/x-httpd-php
</IfModule>




A2.圧縮と解凍はその都度自動対応。「http.conf」で設定


Webサイトの表示速度を改善する
▼httpd.conf
# 転送するコンテンツに圧縮を適用
SetOutputFilter DEFLATE

# 圧縮非対応の古いブラウザへの対応
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# gif,jpg,pngなど画像コンテンツは圧縮しない
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary

# MIMEタイプ指定で指定したファイルのみ圧縮
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
# AddOutputFilterByType DEFLATE application/xhtml+xml
# AddOutputFilterByType DEFLATE application/xml
# AddOutputFilterByType DEFLATE application/rss+xml
# AddOutputFilterByType DEFLATE application/atom_xml
# AddOutputFilterByType DEFLATE application/x-javascript
# AddOutputFilterByType DEFLATE application/x-httpd-php


mod_deflateの設定方法 Apache 2.2系 [高速化] 
<IfModule deflate_module>

# 圧縮率の設定

DeflateCompressionLevel 1

<Location />

# NetScape 4.xのバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4 gzip-only-text/html

# NetScape 4.06-4.08のバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# IEのユーザーエージェントは、Mozilla/4だがgzip圧縮を受け付けるので除外する。ただしIE6はバグがあるので除外の対象外
BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html

# 圧縮するファイルのMimeTypeを、mod_filterを使って指定する。
FilterDeclare Compression CONTENT_SET
FilterProvider Compression DEFLATE resp=Content-Type $text/html
FilterProvider Compression DEFLATE resp=Content-Type $text/plain
FilterProvider Compression DEFLATE resp=Content-Type $text/css
FilterProvider Compression DEFLATE resp=Content-Type $text/javascript
FilterProvider Compression DEFLATE resp=Content-Type $text/xml
FilterProvider Compression DEFLATE resp=Content-Type $application/xhtml
FilterProvider Compression DEFLATE resp=Content-Type $application/xml
FilterProvider Compression DEFLATE resp=Content-Type $application/xhtml+xml
FilterProvider Compression DEFLATE resp=Content-Type $application/rss+xml
FilterProvider Compression DEFLATE resp=Content-Type $application/atom+xml
FilterProvider Compression DEFLATE resp=Content-Type $application/javascript
FilterProvider Compression DEFLATE resp=Content-Type $image/svg-xml
FilterChain Compression

# プロキシサーバーが間違ったコンテンツを配布しないようにするための設定
Header append Vary Accept-Encoding env=!dont-vary

</Location>
</IfModule>


mod_deflateの設定方法 Apache 2.4系 [高速化] 
・Apache 2.4系
▼httpd.conf
<IfModule deflate_module>

# 圧縮率の設定

DeflateCompressionLevel 1

<Location />

# NetScape 4.xのバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4 gzip-only-text/html

# NetScape 4.06-4.08のバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# IEのユーザーエージェントは、Mozilla/4だがgzip圧縮を受け付けるので除外する。ただしIE6はバグがあるので除外の対象外(今更使ってる人はいないと思うけど)
BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html

# 圧縮するファイルのMimeTypeを、mod_filterを使って指定する。
FilterDeclare Compression CONTENT_SET
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/html'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/plain'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/css'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/javascript'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/xhtml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/xhtml+xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/rss+xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/atom+xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/javascript'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘image/svg-xml'”
FilterChain Compression

# プロキシサーバーが間違ったコンテンツを配布しないようにするための設定
Header append Vary Accept-Encoding env=!dont-vary

</Location>
</IfModule>


正しく圧縮、素早く送信、mod_deflateの設定方法 
・Apache 2.4系
▼httpd.conf
<IfModule mod_deflate.c>
DeflateCompressionLevel 1
<IfModule mod_filter.c>
 FilterDeclare COMPRESS
 FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} =~ m#^text\/#i"
 FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} =~ m#^application\/(atom\+xml|javascript|json|rss\+xml|xml|xhtml\+xml)#i"
 FilterProvider COMPRESS DEFLATE "%{CONTENT_TYPE} =~ m#^image\/(svg\+xml|vnd\.microsoft\.icon)#i"
 FilterChain COMPRESS
 FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no
# BrowserMatch ^Mozilla/4 gzip-only-text/html
# BrowserMatch ^Mozilla/4\.0[678] no-gzip
# BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Header append Vary Accept-Encoding env=!dont-vary
</IfModule>
</IfModule>


コンテンツの転送速度をアップする(レスポンス圧縮化)
・画像以外の例
▼httpd.conf
<IfModule deflate_module>
SetOutputFilter DEFLATE

DeflateCompressionLevel 1

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html

SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary

Header append Vary Accept-Encoding env=!dont-vary
</IfModule>


Apacheで静的ファイルをgzip圧縮する設定
LoadModule filter_module modules/mod_filter.so
DeflateCompressionLevel 5

#IE6 has some problems...
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIEs(7|8) !no-gzip

FilterDeclare Compression CONTENT_SET
FilterProvider Compression DEFLATE Content-Type $text/xml
FilterProvider Compression DEFLATE Content-Type $text/html
FilterProvider Compression DEFLATE Content-Type $text/css
FilterProvider Compression DEFLATE Content-Type $text/javascript
FilterChain Compression

# Don't append Vary heder for specific files
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|zip|lzh|exe)$ dont-vary

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
Header append Vary Accept-Encoding env=!dont-vary



B3.gzipファイルを事前に用意。「.htaccess」で設定


gzip圧縮転送についてトコトン調べてみた
▼.htaccess
RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.+) $1.gz

<FilesMatch "\.css\.gz$">
 ForceType text/css
 AddEncoding x-gzip .gz
</FilesMatch>
<FilesMatch "\.js\.gz$">
 ForceType application/x-javascript
 AddEncoding x-gzip .gz
</FilesMatch>

Header append Vary Accept-Encoding env=!dont-vary



gzip 圧縮によるサイトパフォーマンスを向上させる方法
▼.htaccess
# RewriteEngineを 有効にする
RewriteEngine on

# gzip を提供する条件
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_URI} (\.js|\.css|\.html)$
RewriteCond %{REQUEST_FILENAME}.gz -s
RewriteRule .* %{REQUEST_URI}.gz [L]

# ファイル別に MIME タイプを設定
<FilesMatch "\.html?\.gz$">
 ForceType text/html
</FilesMatch>
<FilesMatch "\.css\.gz$">
 ForceType text/css
</FilesMatch>
<FilesMatch "\.js\.gz$">
 ForceType text/javascript
</FilesMatch>


改行削除するくらいなら gzip したらいいじゃない
▼.htaccess
#RewriteEngine を有効に
RewriteEngine On

#これの記述は任意。対象ディレクトリを指定したい場合は書けばいい。書かなければ .htaccess が置かれたディレクトリ以下に有効
RewriteBase /

#Accept-Encoding ヘッダをみて、gzip があれば (つまり gzip に対応した相手なら) 処理を続行。なければ終わり。
RewriteCond %{HTTP:Accept-Encoding} gzip

#送信リクエストされたファイル名に対して、.gz がついたファイルがあるか調べて、あれば次の行へ。なければここで終了。
RewriteCond %{REQUEST_FILENAME}¥.gz -s

#リクエストされたファイル名 + .gz のファイルを返す。
RewriteRule .+ %{REQUEST_URI}.gz

#httpd.conf 内の mod_mime で設定がされていないなら書いとく。これで .gz のファイルが gzip として扱われる。
AddEncoding x-gzip .gz

#~.css.gz というファイルに CSS の MIME タイプを指定
<files *.css.gz>
 AddType text/css .gz
</files>

#~.js.gz というファイルに JavaScript の MIME タイプを指定
<files *.js.gz>
 AddType text/javascript; .gz
</files>



gzip圧縮でCSSやJSなどの転送量を減らす方法
▼.htaccess
RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule .+ %{REQUEST_URI}.gz

#スタイルシート (.css)
<FilesMatch "\.css\.gz$">
ForceType text/css
AddEncoding x-gzip .gz
</FilesMatch>

#Javascript (.js)
<FilesMatch "\.js\.gz$">
ForceType application/x-javascript
AddEncoding x-gzip .gz
</FilesMatch>

#HTML (.html)
<FilesMatch "\.html\.gz$">
ForceType   text/html
AddEncoding x-gzip .gz
</FilesMatch>


ウェブサイトをgzip圧縮で高速化する
▼.htaccess
RewriteEngine on
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME} !\.gz$
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule .+ %{REQUEST_URI}.gz
<files *.html.gz>
AddType "text/html;charset=utf-8" .gz
</files>
<files *.js.gz>
AddType "text/javascript;charset=utf-8" .gz
</files>
<files *.css.gz>
AddType "text/css" .gz
</files>
AddEncoding x-gzip .gz




気が付いた点 / 最終的に

 閲覧数:120 投稿日:2017-08-24 更新日:2017-08-24 

気が付いた点


Apacheバージョン
・Apacheバージョン毎に記述書式が異なるため、参考にする場合は必ず確認した方が良い


最終的に


A2.mod_deflateの設定方法 Apache 2.2系 [高速化]
・そのまま採用することにした

下記を作成したが、イマイチ自信がないため、今回は不採用
<IfModule mod_deflate.c>
DeflateCompressionLevel 1
<IfModule mod_filter.c>
 SetOutputFilter DEFLATE
 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
</IfModule>



実装


前提条件として設定ファイル(/etc/httpd/conf/httpd.conf)で下記のモジュールを読み込むように設定する必要がある
# vim /etc/httpd/conf/httpd.conf
・修正前
#LoadModule filter_module modules/mod_filter.so 

・修正後
LoadModule filter_module modules/mod_filter.so  



・当初から有効だったので、修正なし
LoadModule deflate_module modules/mod_deflate.so


mod_deflateの設定ファイル(/etc/httpd/conf.d/deflate.conf)を作成
# vim /etc/httpd/conf.d/deflate.conf
<IfModule deflate_module>

# 圧縮率の設定

DeflateCompressionLevel 1

<Location />

# NetScape 4.xのバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4 gzip-only-text/html

# NetScape 4.06-4.08のバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# IEのユーザーエージェントは、Mozilla/4だがgzip圧縮を受け付けるので除外する。ただしIE6はバグがあるので除外の対象外
BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html

# 圧縮するファイルのMimeTypeを、mod_filterを使って指定する。
FilterDeclare Compression CONTENT_SET
FilterProvider Compression DEFLATE resp=Content-Type $text/html
FilterProvider Compression DEFLATE resp=Content-Type $text/plain
FilterProvider Compression DEFLATE resp=Content-Type $text/css
FilterProvider Compression DEFLATE resp=Content-Type $text/javascript
FilterProvider Compression DEFLATE resp=Content-Type $text/xml
FilterProvider Compression DEFLATE resp=Content-Type $application/xhtml
FilterProvider Compression DEFLATE resp=Content-Type $application/xml
FilterProvider Compression DEFLATE resp=Content-Type $application/xhtml+xml
FilterProvider Compression DEFLATE resp=Content-Type $application/rss+xml
FilterProvider Compression DEFLATE resp=Content-Type $application/atom+xml
FilterProvider Compression DEFLATE resp=Content-Type $application/javascript
FilterProvider Compression DEFLATE resp=Content-Type $image/svg-xml
FilterChain Compression

# プロキシサーバーが間違ったコンテンツを配布しないようにするための設定
Header append Vary Accept-Encoding env=!dont-vary

</Location>
</IfModule>


再起動
# /etc/rc.d/init.d/httpd start



gzip や deflate を使用してリソースを圧縮することで、ネットワークで送信されるバイト数を減らすことができます
Apache「mod_deflate」の設定方法の違いについて

確認

 閲覧数:128 投稿日:2017-08-24 更新日:2017-08-24 
Port80 Software Evaluation Tools
Compression Check :: Port80 Software


Summary:


URL:http://sakura.w4c.work/
Scope of analysis: Real-time data -- target file compression reports only (no supporting files).
Web server type:Apache
Compression status: Compressed (gzip)

File Size Comparison (in bytes):
Original size: 437332 bytes
Compressed size: 77231 bytes
Savings in bytes: 360101 bytes
Percentage saved by compression: 83.0%
Transfer speed improvement: 5.6 X





DocumentRoot must be a directory

Apache 2.2.15を、2.2系の最新へアップグレードしたいがうまくいかない



類似度ページランキング
順位 ページタイトル抜粋
1 PostfixからGoogleのSMTPサーバを指定してメールを送信する 33
2 PHP5をインストールしているCentOSで、PHP7も使用したい 32
3 QAサービスへ投稿する際、例として使用するドメイン / example.com / example.net 30
4 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする 29
5 ファイル拡張子などで条件を絞って全置換するためには、「grep」ではなく「find」を使用 28
6 imagick 3.4.3 を pecl インストール 27
7 他で取得したドメインを、さくらネームサーバ経由して利用 27
8 解約申請して以降、「使用できるソケットを待機しています」が頻繁に表示されるようになって困っているのですが、何か制限をかけていますか? 27
9 iMagick 3.4.0RC6 を pecl インストール 26
10 Apacheエラーログが出力されない。/var/log/httpd/ 25
11 /etc/groupでは、「そのグループをプライマリグループとするユーザ名」を確認することは出来ない 25
12 異なるIPアドレスからアクセスして動作確認 → aguse / HeartRails Capture 25
13 指定ディレクトリ内の「特定拡張子のファイル」のみ削除 / find の -delete オプションを使用 25
14 Let's Encrypt。証明書取得後、複数ホストを確認するためには? 25
15 PHPのmb_send_mail関数でメール送信できない 25
16 「名前ベースのバーチャルホスト」で、「ServerName に一致する名前のないバーチャルホストへのアクセス」があったとき 25
17 phpMyAdmin 3.5.8.2 クエリ実行結果が、すぐに消えてしまう 24
18 ダウンロードした WikipediaXML ファイルから,見出しと要約を 5,000 記事分だけテキスト抽出 24
19 VirtualBox 4.3.12 で、共有フォルダが、Vagrantfile を認識しない 24
20 tkドメイン。ハイフンが入ると、wwwなしでアクセス出来ない 24
2021/9/25 8:42 更新
週間人気ページランキング / 9-18 → 9-24
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 17
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 14
3 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 12
4 PHPのmb_send_mail関数でメール送信できない | メール処理システム 10
5 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) 9
6 さくらVPS0 8
6 tar: これは tar アーカイブではないようです 8
7 manページ日本語表示 | CentOS 7 (CentOS) 7
7 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 7
8 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
8 PHPファイルでchmodエラー | PHP(プログラミング言語) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
8 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 6
9 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 5
9 echo と cat の違い 5
10 phpMyAdmin 4.4.3(phpMyAdmin) カテゴリー 4
10 6回目-10.Nginxでバーチャルホスト設定確認 | CentOS 7 2週間無料のお試し期間 6回目(さくらVPS) 4
10 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? | CentOS 7 2週間無料のお試し期間 Link(さくらVPS) 4
10 cronで定期実行しているphpファイルを、コマンドライン経由で即時実行する | cron(Linuxコマンド) 4
10 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/25 1:01 更新