圧縮と最適化
IBM Cloud® Internet Services は、ページの読み込み時間を改善するために、さまざまなコンテンツタイプでGZIPとBrotli圧縮を使用しています。 圧縮はブラウザの User-Agent
に基づいて適用される。
すでにGZIPを使用している場合、 CIS、サーバー・レスポンスに適切なヘッダーが渡される限り、あなたの設定を受け入れる。
CIS がGZIPをサポートするのは、あなたのオリジン・サーバーと通信するときだけであり、そのようなコンテンツを配信することができる:
- GZIPまたはBrotliによる圧縮
- 圧縮解除
CIS のリバースプロキシは、圧縮形式と非圧縮形式を変換できる。 例えば、オリジンからGZIP圧縮されたコンテンツを取得し、クライアントに非圧縮で提供することができる。 この処理はキャッシュとは無関係に行われる。
CIS は ヘッダーを削除し、その値を無視する。 Accept-Encoding
圧縮コンテンツの種類
CIS、古くなったコンテンツを提供し、CSS、JS、HTMLを最小化するだけでなく、互換性のあるブラウザ向けにGZIPまたはBrotliでレスポンスを圧縮します。 CIS は、互換性のあるクライアントやブラウザに対して、以下のコンテンツタイプに対してGZIPまたはBrotliエンコードされたレスポンスを返します:
text/html
text/richtext
text/plain
text/css
text/x-script
text/x-component
text/x-java-source
text/x-markdown
application/javascript
application/x-javascript
text/javascript
text/js
image/x-icon
image/vnd.microsoft.icon
application/x-perl
application/x-httpd-cgi
text/xml
application/xml
application/xml+rss
application/vnd.api+json
application/x-protobuf
application/json
multipart/bag
multipart/mixed
application/xhtml+xml
font/ttf
font/otf
font/x-woff
image/svg+xml
application/vnd.ms-fontobject
application/ttf
application/x-ttf
application/otf
application/x-otf
application/truetype
application/opentype
application/x-opentype
application/font-woff
application/eot
application/font
application/font-sfnt
application/wasm
application/javascript-binast
application/manifest+json
application/ld+json
オリジンからの特定のレスポンスをエンコードしたくない場合は、 cache-control: no-transformを設定して、オリジンウェブサーバーでのエンコードを無効にすることができます。
Brotli圧縮の有効化
- CIS アカウントにログインしてください。
- 該当するドメインを選択します。
- 「パフォーマンス」タブをクリックします。
- 「アドバンスト」タブをクリックします。
- Brotli スイッチを
On
に切り替える。
HTML、 JavaScript,、CSSの最小化
CIS は、HTML、、CSSファイルから、その機能に影響を与えることなく、不要な文字をすべて削除する JavaScript Minifyウェブコンテンツです。
- CSS と JavaScript の縮小は、キャッシュに入れられた CSS ファイルと JS ファイルに対してのみ行われます。
- CIS がファイルのキャッシュHITを返した後、そのファイルは最小化された形でブラウザに返される。これにより、 CIS は完全な最小化結果を提供することができる。
- ミニフィケーションの変更を適用するには、 CIS キャッシュをパージしてください。
イメージ・サイズ最適化圧縮
CIS メタデータを除去し、非可逆圧縮または可逆圧縮を適用して配信を高速化することで、エッジネットワークにキャッシュされた画像を最適化する。 オフサイトの画像は最適化されていない。
画像サイズの最適化圧縮は、コンソールのページルールとしてのみ利用可能です。 ドメイン・レベル設定は CLI で使用できます。
イメージ・サイズ最適化圧縮のオプション
イメージ・サイズ最適化圧縮のオプションについて、以下のセクションで詳しく説明します。
ロスレス
- ほとんどのメタデータ(例えばEXIFデータ)を除去する。
- 視覚的なディテールをすべて保持。
- 圧縮解除された出力は元の画像と一致する。
非可逆
- メタデータを除去し、画像サイズを約15%縮小する。
- 一部のオリジナルデータは永久に失われる。
- PNGの場合、結果は事実上ロスレスと同じである。
ロスレスおよびロッシーモードは、可能な限り多くのメタデータを削除しようとするが、キャッシュなどの要因により、完全な削除は不可能な場合がある。
WebP
- WebP 優れたコンプレッションを提供する:
- PNGより約26%小さい(ロスレス)
- JPEG(非可逆)より25~34%小さい
- CIS WebP バージョンを作成し、キャッシュする。
- WebP の場合のみ提供される:
- ブラウザの
Accept
ヘッダーには、 WebP。 - 圧縮された画像は、非可逆または可逆バージョンよりも大幅に小さくなる。
- ブラウザの
対応 Accept
ヘッダーの例:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
現在、WebP は Firefox、Google Chrome、Opera の各ブラウザーでのみサポートされています。
WebP をサポートしていないブラウザでのキャッシュの問題を避けるために、オリジンで WebP を無効にする。
画像サイズの最適化が有効であることを確認する
ページ・ルール または CLI ドメイン設定 を使用して、イメージ・サイズの最適化をアクティブ化します。
CIS は、最適化された画像に以下のヘッダを追加します:
cf-bgj: imgq:85
cf-polished: qual=85, origFmt=jpeg, origSize=95005
cf-cache-status: HIT
cf-bgj
ヘッダーは、 CIS が画像サイズの最適化を適用したことを確認し、画質設定 (imgq
) を返す。 cf-polished
ヘッダーは、画像サイズ最適化のステータスを表し、画質設定(qual
)とオリジナルサイズ(origSize
)を返す。 cf-cache-status
は、画像がキャッシュされ、画像サイズの最適化が適用できることを確認します。
WebP 変換しても画像は変わらない。 URL Content-Type HTTP
ヘッダーは、イメージの元の形式をブラウザーに伝えます。
Cf-Polished の一般的な状況
以下の表は、Cf-Polished の一般的な状況とそのトラブルシューティングの方法をリストしたものです。 Cf-Polishedヘッダーが返されない場合は、シングルファイルキャッシュパージを使って画像をパージしてみる。
ステータス | 定義 | 推奨 |
---|---|---|
input_too_large |
画像が大きすぎたり複雑すぎたりするため、低解像度で処理する必要がある。 | 1,000px、10MB以下のPNGまたはJPEG画像を使用してください。 |
not_compressed または not_needed | 画像はオリジンサーバーで完全に最適化され、圧縮は適用されていない。 | |
webp_bigger |
ポーランドは WebP,、変換を試みたが、画像はオリジン・サーバーで最適化されたか、低画質設定で作成されたか、あるいはその両方であった。 | WebP バージョンが存在しないため、ステータスはPNGまたはJPEGバージョンのレスポンスに設定される。 |
cannot_optimize またはinternal_error |
オリジンサーバーで画像が壊れているか、不完全である。 | 新しいバージョンのイメージを起点サーバーにアップロードしてください。 |
format_not_supported |
画像形式がサポートされていない(例:BMP、TIFF)、オリジンサーバーがポーランド語と互換性のない最適化ソフトウェアを使用している、またはその両方。 | 入力画像をウェブと互換性のある形式(たとえばPNGやJPEG)に変換するか、オリジン・サーバーで余分な最適化ソフトウェアを無効にするか、あるいはその両方を試してみてください。 |
vary_header_present |
オリジンのウェブサーバーが accept-encoding 以外の値で Vary ヘッダーを送信した。 |
起点 Web サーバーが WebP のサポートを試行している場合は、起点 Web サーバーで WebP を無効にし、Polish に WebP 変換を実行させてください。 |
accept-encoding
が Vary
ヘッダーの唯一の値でない場合でも、最適化は機能する。