Webパフォーマンス向上の鍵「レスポンス圧縮とその最適化手法」前編 | クライマー株式会社
最近は予約システムばかり設計・実装している、エンジニアの柿添です。 予約周りの要望の中でロックや速度の話が何度も浮上してきましたので、 今回は、Webサイトのパフォーマンス向上に欠かせない「レス...
https://www.wantedly.com/companies/c-limber/post_articles/945885
Webパフォーマンス向上の鍵「レスポンス圧縮とその最適化手法」の後編をお届けします
前編はこちら▼
Cloudflareを利用せずに、nginxやApache、PHPなどのWebサーバーで圧縮レスポンスを提供する場合、以下の手順が必要です。
nginx.conf
に以下の設定を追加します。gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;
Brotliを利用する場合は、モジュールをインストールした上で以下のように設定します:brotli on;
brotli_types text/html text/css application/javascript;
brotli_comp_level 6;
brotli on;
brotli_types text/html text/css application/javascript;
brotli_comp_level 6;
mod_deflate
またはmod_brotli
を有効化し、以下のような設定をhttpd.conf
に記述します:<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/html
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/html
</IfModule>
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI text/html text/css application/javascript
</IfModule>
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI text/html text/css application/javascript
</IfModule>
zlib.output_compression
を有効にします。php.ini
での設定:zlib.output_compression = On
zlib.output_compression_level = 6
zlib.output_compression = On
zlib.output_compression_level = 6
ob_start('ob_gzhandler');
ob_start('ob_gzhandler');
Cloudflareのテストでは、ZstandardはBrotliより42%速く圧縮し、Gzipより11.3%効率的であることが示されています。また、その設計背景には、大規模なデータ処理を高速かつ効率的に行うニーズがあり、オープンソース化されたことで、広く利用されるようになっています。
詳細な技術情報は Zstandard GitHubリポジトリ をご覧ください。
Cloudflareを利用すると、Webサーバー側での複雑な設定を行わずに、効率的に圧縮を管理できます。特に、圧縮ルールを活用することで、特定の条件に基づいて圧縮を柔軟に制御できます。以下では、Cloudflareダッシュボードを使用して圧縮ルールを設定する手順と、その利点について詳しく説明します。
圧縮ルールの作成手順
条件: http.request.uri.path matches "*.jpg" or "*.png" or "*.mp4"
アクション: Disable Compression
条件: http.request.uri.path matches "*.jpg" or "*.png" or "*.mp4"
アクション: Disable Compression
条件: http.user_agent contains "Chrome" or "Firefox"
アクション: Enable Compression (Zstandard)
条件: http.user_agent contains "Chrome" or "Firefox"
アクション: Enable Compression (Zstandard)
条件: response.body.size gt 100KB
アクション: Enable Compression
条件: response.body.size gt 100KB
アクション: Enable Compression
Content-Encoding
ヘッダーが期待通りになっているか確認します。レスポンス圧縮は、Webサイトのパフォーマンス向上とユーザー体験の最適化に不可欠な技術です。 特に、Cloudflareの圧縮ルールを活用することで、効率的な圧縮設定を柔軟に管理できます。 最新の圧縮アルゴリズムであるZstandard(Zstd)を導入することで、 より高速かつ効率的な圧縮を実現し、ユーザーに最適なコンテンツ配信を提供できます。