IBM Cloud Docs
圧縮と最適化

圧縮と最適化

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圧縮の有効化

  1. CIS アカウントにログインしてください。
  2. 該当するドメインを選択します。
  3. 「パフォーマンス」タブをクリックします。
  4. 「アドバンスト」タブをクリックします。
  5. 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ヘッダーが返されない場合は、シングルファイルキャッシュパージを使って画像をパージしてみる。

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-encodingVary ヘッダーの唯一の値でない場合でも、最適化は機能する。