Alibaba Cloud CDN での高速化後、要素が読み込めないのはなぜですか?

更新日時
Copy as MD

Alibaba Cloud CDN の高速化を有効にした後、一部のページ要素が読み込めなくなることがあります。これは、パラメータフィルタリングによって、リクエストがオリジンに転送される前にクエリ文字列が削除されるためです。問題を解決するには、パラメータフィルタリングを無効にしてください。

現象

ドメインで CDN の高速化を有効にした後、画像、スクリプト、その他のリソースといった特定の要素が読み込まれないと訪問者から報告があります。CDN の高速化を適用する前は、ドメインは正常に機能していました。

原因

CDN ドメインでパラメータフィルタリングが有効になっています。この機能が有効な場合、CDN はリクエストをオリジンサーバーに転送する前に、URL からすべてのクエリ文字列パラメータを削除します。例:

  • 訪問者がリクエストする URL:https://example.com/image.jpg?version=2&size=large

  • CDN がオリジンに転送する URL:https://example.com/image.jpg

これは、キャッシュ動作に次の 2 つの点で影響を与えます。

  • クエリ文字列パラメータにかかわらず、同じリソースへのすべてのリクエストが同一と見なされ、単一のキャッシュコピーから配信されます。

  • クエリパラメータに依存して異なるコンテンツを返すリソース (動的に生成される画像や API 駆動のアセットなど) では、不正確なレスポンスが返されたり、レスポンスが欠落したりします。

お使いのサイトが疑問符 (?) の後にパラメータを含む URL を使用している場合、パラメータフィルタリングによってリクエストが失敗したり、予期しない結果が返されたりします。

ソリューション

影響を受けるドメインのパラメータフィルタリングを無効にしてください。

  1. Alibaba Cloud CDN コンソールにログインし、左側のナビゲーションペインで [ドメイン名] をクリックします。

  2. 管理したいドメイン名を見つけ、[操作] 列の [管理] をクリックします。管理ページで、パラメータフィルタリングを無効にします。

修正の確認

パラメータフィルタリングを無効にした後、要素が正しく読み込まれるようになったことを確認してください。

  1. 影響を受けるドメインのブラウザーキャッシュと CDN キャッシュをクリアしてください。

  2. クエリパラメータを含む URL を使用してリソースをリクエストしてください。

  3. 正しいコンテンツが読み込まれることを確認してください。オリジンがクエリパラメータに基づいて異なるレスポンスを返す場合は、各バリアントが正しく配信されることを確認してください。

ベストプラクティス

同様の問題を回避するために、次の点に留意してください。

  • パラメータ順序の統一。 CDN は、同じパラメータが異なる順序で並んでいる URL を、別々のキャッシュキーとして扱います。たとえば、image.jpg?color=red&size=largeimage.jpg?size=large&color=red は、2 つの異なるオブジェクトとしてキャッシュされます。常にパラメータを同じ順序でリストしてください (アルファベット順に並べるのが一般的な方法です)。

  • パラメータの大文字小文字の統一。 キャッシュキーのマッチングでは、パラメータ名と値で大文字と小文字が区別されます。URL 全体で一貫して小文字を使用してください。

  • 有効化前のパラメータフィルタリングの確認。 パラメータフィルタリングは、クエリパラメータがレスポンスに影響を与えないリソースにのみ適しています。たとえば、静的アセットの URL に追加されるトラッキングパラメータなどです。動的またはパラメータ依存のリソースに対してこの機能を有効にすると、この問題が発生します。