判断基準と境界
GzipとBrotliは、サーバーとブラウザーが対応するエンコーディングを折衝できるときに、転送するテキストのバイト数を減らすHTTPのコンテンツエンコーディングです。コンテンツエンコーディングは、クライアントとサーバーの間で折衝して決まります。ブラウザーが受け入れ可能なエンコーディングを伝え、サーバーがContent-Encodingを付けた表現を返します。効果が大きいのは、圧縮できるHTML、CSS、JavaScript、JSON、SVGです。すでに圧縮されている画像やアーカイブには向きません。
確認の方法
代表的なドキュメントを、受け入れるエンコーディングを指定した場合としない場合でリクエストし、ヘッダー、転送サイズ、キャッシュの差異、デコードの成否を比較します。折衝していないクライアントに、中継サーバーがBrotliの表現を返していないかも確認します。
実践的な流れ
配信を担うレイヤーで圧縮を有効にします。共有キャッシュで必要な場合はVary: Accept-Encodingを残し、キャッシュなしの初回レスポンスとキャッシュ済みのレスポンスの両方を確認します。転送バイト数は、サーバーの応答時間やレンダリングの処理とは別に測定します。
よくある間違いと測定の限界
転送量が小さくなっても、操作が速くなったことの証明にはなりません。圧縮では、オリジンの処理の遅さ、サイズの大きすぎる画像、過剰なJavaScript、誤ったバリアントを配信するキャッシュ設定は直せません。よくある失敗は、すでに圧縮されているメディアを圧縮することと、圧縮されていないローカルファイルを見て圧縮の効果を判断することです。
FAQ
GzipとBrotliによる圧縮とは何ですか?
GzipとBrotliによる圧縮は、どう確認すればよいですか?
Content-Encoding、Vary: Accept-Encoding、レスポンスサイズを確認し、デコード後のページが正しくレンダリングされるかも見ます。そのうえで、情報源、日付、設定、足りない証拠を記録します。