このトピックでは、Alibaba Cloud CDN の消去とプリフェッチ操作に関するよくある質問 (FAQ) に回答します。消去とプリフェッチの違い、推奨される操作の順序、クォータ、トラブルシューティング、ブラウザーキャッシュの競合、同名更新、M3U8 プリフェッチについて説明します。
消去とプリフェッチの比較
消去とプリフェッチは、2 つの異なる操作です。
-
消去:エッジノードに、キャッシュされたリソースを期限切れとしてマークするように指示します。ユーザーがリソースを再度リクエストすると、エッジノードはオリジンフェッチを実行して最新バージョンを取得し、ユーザーに配信して再キャッシュします。消去操作は、一時的にキャッシュヒット率を低下させます。
-
プリフェッチ:オリジンサーバーからエッジノードにリソースを事前に読み込みます。ユーザーが初めてリソースをリクエストすると、近くのエッジノードが直接リソースを提供するため、オリジンフェッチが不要になります。プリフェッチ操作は、キャッシュヒット率を向上させます。
消去とプリフェッチの順序
消去とプリフェッチは独立した操作であり、厳密な順序はありません。ただし、オリジンサーバー上のリソースを更新する場合は、次の順序に従うことを推奨します。
-
最初に消去:CDN キャッシュから古いコンテンツを消去し、後続のリクエストがオリジンサーバーから最新バージョンを取得できるようにします。
-
次にプリフェッチ:消去タスクが完了した後、更新されたコンテンツをエッジノードにプリフェッチします。これにより、ユーザーは最小限のレイテンシで新しいコンテンツにアクセスできます。
-
初めての CDN 統合:コンテンツがまだエッジノードにキャッシュされていない場合は、直接リソースをプリフェッチしてキャッシュをウォームアップできます。
オリジン URL と高速化ドメイン URL
オリジンサーバーの URL ではなく、常に高速化ドメインを含む URL を使用してください。Alibaba Cloud CDN システムは、高速化ドメインによってキャッシュされたリソースを識別・管理します。高速化ドメインの URL に対して消去またはプリフェッチリクエストを送信することで、エッジノードにキャッシュされたコンテンツを正しく更新またはプリロードできます。
ワイルドカードドメインの消去
Alibaba Cloud CDN では、単一の操作でワイルドカードドメインのすべてのキャッシュされたコンテンツを消去することはできません。特定のサブドメイン、ディレクトリ、または URL パスに対して個別の消去リクエストを送信する必要があります。https://*.example.com/file01.html や https://*.example.com/file02/ のようなパターンは使用できません。複数の URL を消去する必要がある場合は、1 行に 1 つの URL を入力してください。
消去とプリフェッチの反映時間
-
消去タスク:消去タスクは通常、ネットワーク全体に約 5〜6 分で反映されます。リソースに設定された TTL がこれより短い場合、手動での消去は不要です。
-
プリフェッチタスク:所要時間はファイルのサイズと数によって異なりますが、通常は完了までに 5〜30 分かかります。
CDN 設定変更の適用
オリジンホスト、キャッシュルール、レスポンスヘッダーなどの CDN の設定変更は、通常、新しいリクエストにのみ適用されます。エッジノードがすでに古いレスポンスヘッダーやコンテンツをキャッシュしている場合、エッジノードはそのキャッシュされたコンテンツに新しい設定を適用しません。変更をすぐに反映させるには、対応する URL またはディレクトリのキャッシュを手動で消去する必要があります。これにより、エッジノードは強制的にオリジンフェッチを実行し、新しい設定でリソースを取得します。
たとえば、レスポンスヘッダーや TTL を変更した後は、CDN コンソールの [キャッシュリフレッシュ] ページに移動します。消去したい URL またはディレクトリパスを入力し、リクエストを送信してください。設定変更によって Content-Type の不一致が発生した場合は、まずオリジンサーバー上のメタデータを修正し、その後、影響を受ける URL を消去します。
プリフェッチリクエストのカスタムヘッダー
デフォルトでは、プリフェッチリクエストには Accept-Encoding: gzip ヘッダーが含まれます。プリフェッチリクエストに他のヘッダーを含めたり、複数レプリカのプリフェッチを実行したりするには、OpenAPI を使用できます。
同名ファイルの更新
CDN で高速化しているファイルを更新する際は、以下のベストプラクティスに従ってください。
-
一般的なファイルの更新では、同名更新に関連するキャッシュの問題を回避するために、リソース URL に
?v=1.0のようなバージョン番号を追加することを推奨します。 -
同名更新を実行する必要がある場合は、コンソールまたは OpenAPI を使用して消去リクエストを送信してください。コンソール操作については、「リソースの消去とプリフェッチ」をご参照ください。OpenAPI 操作については、「消去とプリフェッチ」をご参照ください。
JS/CSS の更新に関する問題
ブラウザーと CDN は、特定の JS および CSS ファイルの URL をキャッシュします。ファイルの内容を更新してもファイル名を変更しない場合や、ファイル名を変更しても HTML 内の参照を更新しない場合、ホームページのみを消去するだけでは不十分なことがあります。ユーザーのブラウザーや CDN が、キャッシュから古いバージョンのサブリソースを提供し続ける可能性があります。
推奨事項:
-
ホームページだけでなく、JS/CSS ファイルの特定の URL を消去してください。
-
ベストプラクティスとして、同名更新によるキャッシュの問題を避けるために、リソース URL に
?v=1.0のようなバージョンパラメーターを追加してください。 -
オリジンサーバーで同名更新が発生した場合は、CDN コンソールで対応する URL のキャッシュを手動で消去してください。消去タスクが完了してから数分待って、シークレットウィンドウで再度テストしてください。
コンテンツ更新のトラブルシューティング
考えられる原因:この問題は、いくつかの理由で発生する可能性があります。
-
消去タスクによって CDN キャッシュはクリアされましたが、お使いのブラウザーがローカルのブラウザーキャッシュから古いバージョンのリソースをまだ提供している場合があります。
-
オリジンサーバー上のリソースが更新されていない。
-
消去またはプリフェッチタスクがまだ完了していない。
-
ディレクトリの消去を実行すると、CDN はデフォルトでオブジェクトを期限切れとしてマークします。次のオリジンフェッチの際、CDN はリクエストに If-Modified-Since または If-None-Match ヘッダーを含めます。オリジンサーバー上の同名ファイルの Last-Modified または ETag が変更されていない場合、オリジンサーバーは 304 Not Modified ステータスコードを返し、CDN は古いコンテンツを提供し続けます。
解決策:原因に基づいて、次の解決策を試してください。
-
ブラウザーのキャッシュをクリアし、ページを更新してリソースが更新されているかどうかを確認してください。シークレットウィンドウや別のブラウザーを使用してテストすることもできます。
-
ローカルの hosts ファイルを変更して、ドメインをオリジンサーバーに直接向けてください。次に、オリジンサーバーに直接アクセスしてリソースが更新されているか確認してください。更新されていない場合は、CDN で高速化する前にオリジンサーバー上のリソースを更新してください。
-
「リソースの消去とプリフェッチ」ページでタスクのステータスを確認してください。
-
URL 消去 (ファイルタイプ) を実行して、特定のファイルのキャッシュを削除してください。または、
RefreshObjectCachesAPI を呼び出し、Forceパラメーターをtrueに設定してください。これにより、強制的な消去が実行され、コンテンツは期限切れとしてマークされるだけでなく、エッジノードから即座に削除されます。
[キャッシュリフレッシュ] ページで、[操作記録] タブをクリックしてください。タスクの [ステータス] が [成功] で、[進行状況] が [100%] であることを確認して、完了を検証してください。
プリフェッチのダウンロード速度に関する問題
プリフェッチタスクは、オリジンサーバーから複数のエッジノードへの同時ダウンロードをトリガーします。単一ノードからのダウンロード速度は最初は速いかもしれませんが、より多くのノードがダウンロードを開始するにつれて、全体の速度はオリジンサーバーの帯域幅によって制限されます。帯域幅の低いオリジンサーバーの場合、プリフェッチタスクにはより長い時間がかかります。オリジンの帯域幅を評価し、必要に応じて増加させるか、大きなプリフェッチジョブをより小さなバッチに分割してください。
30X リダイレクトのプリフェッチへの影響
プリフェッチ中にオリジンサーバーが 307 またはその他のリダイレクト関連のステータスコードを返した場合、プリフェッチタスクはリダイレクトに従わず、タスクは失敗します。オリジンサーバーが 301 または 302 ステータスコードを返し、CDN で「301/302 リダイレクトのフォロー」を有効にしている場合、CDN はリダイレクトに従い、プリフェッチタスクは正常に完了します。
古いコンテンツまたは 404 エラー
CDN エッジノードには、古いバージョンのリソースがキャッシュされている可能性があります。オリジンサーバー上のファイルが削除または更新されても、キャッシュされたバージョンが提供され続けることがあります。これを解決するには、次のように対処します。
-
CDN コンソールまたは API を使用して、特定の URL の消去操作を実行してください。
-
問題がディレクトリレベルのキャッシュポリシーによって引き起こされている場合は、ディレクトリ全体を消去してください。コンテンツが完全に削除されるようにするには、
RefreshObjectCachesAPI を呼び出し、Forceパラメーターをtrueに設定して強制的な消去を実行してください。 -
ファイルがオリジンサーバーで実際に更新または削除されていることを確認してください。
プリフェッチ失敗のトラブルシューティング
プリフェッチタスクが失敗した場合は、次の項目を確認してください。
-
URL のアクセス可能性の確認:プリフェッチ対象の URL にブラウザーでアクセスし、
200ステータスコードが返されることを確認します。308などのリダイレクトステータスコードが返される場合は、リダイレクト後の最終的な URL がプリフェッチの対象となります。 -
ファイル URL であることの確認:プリフェッチ機能は、特定のファイル URL のみをサポートしており、末尾に
/が付くディレクトリパスには対応していません。リダイレクトの結果、URL の末尾に/が付加された場合でも、その URL がオリジンサーバー側で特定のファイル (例: index.html) を返すように設定されていなければ、プリフェッチは失敗します。 -
OSS 動的アクセラレーションとの競合の確認:オリジンが OSS バケットであり、動的アクセラレーションを有効にしている場合、静的ファイルがキャッシュパスをバイパスする可能性があります。動的アクセラレーションを無効にするか、キャッシュする静的ファイルタイプを指定してください。
-
URL 形式の確認:URL は完全なプロトコルヘッダー (
http://またはhttps://) で始まる必要があり、全角文字や余分なスペースなどの不正な文字を含んではいけません。複数の URL は、カンマではなく改行で区切ってください。 -
リソースがキャッシュ可能かどうかの確認:プリフェッチしたいリソースに、
Cache-Control: no-cache/no-store/privateのようなキャッシュを妨げるヘッダーがないことを確認してください。
HTTP と HTTPS タスクの処理
いいえ。Alibaba Cloud CDN は、URL の HTTP バージョンと HTTPS バージョンをキャッシュ内で同一のリソースとして扱います。一方のプロトコルに対する消去またはプリフェッチリクエストは、両方に適用されます。たとえば、ファイル aaa.mp4 をプリフェッチする必要がある場合、https://example.com/aaa.mp4 をプリフェッチするだけで十分です。http://example.com/aaa.mp4 もプリフェッチする必要はありません。