Google CDNのAMPキャッシュを大解剖――URLフォーマット、更新プロセス、更新方法、削除方法

[レベル: 上級]

この記事では、Googleが公開しているドキュメントに基づいて、AMPキャッシュの仕組みについて説明します。

具体的には、次を扱います。

  • AMPキャッシュのURLフォーマット
  • AMPキャッシュの更新プロセス
  • AMPキャッシュの更新強制
  • AMPキャッシュの削除

あなたがAMPをすでに実装しているなら、知っておくと役に立つこともあるはずです。

では行ってみましょう⚡

AMPロゴ

AMPキャッシュのURLフォーマット

AMP CDNにキャッシュされたコンテンツはたとえば次のようなURLになります。

  • https://cdn.ampproject.org/c/s/example.com/amp_document.html
  • https://cdn.amproject.org/i/example.com/images/logo.png

分解して、どんな構成になっているのかを見てみましょう。
※ここでは、Googleが提供しているAMP CDNのキャッシュについて話します。もしGoogle以外のAMP CDNを使うなら仕様は異なるでしょう。

https://cdn.amproject.org

AMPキャッシュのURLは常に https://cdn.amproject.org で始まります。
Googleが公開しているAMP CDNのURIになります。

コンテンツのタイプ

https://cdn.amproject.org のあとには次の3つのいずれかが続きます。
これらは、コンテンツのタイプを表します。

  • /c −− HTMLドキュメント
  • /i −− 画像
  • /r −− フォントなどのリソース

HTTPS (TLS)

オリジナルのAMPページまたは画像、リソースがHTTPSで配信されているときは、コンテンツのタイプ (/c, /i. /r) の次に /s が続きます。

URI

最後に来るのは、オリジナルのAMPページのURLから、http:// または https:// を取り除いた部分です。
URLがパラメータ (?) を含んでいてもそのまま使えます。

ここまでをふまえて、AMPキャッシュのURLをもう一度見てみましょう。

オリジナルのAMPページ(あなたのサーバーに直接アクセスしたときのAMPページ)のURLが次のようだったとします。
http://example.com/amp_document.html

このとき、AMPキャッシュのURLはこのようになります。
https://cdn.ampproject.org/c/example.com/amp_document.html

まず、固定の https://cdn.ampproject.org で始まります。
https://cdn.ampproject.org/c/example.com/amp_document.html

次に、コンテンツタイプがHTMLドキュメントなので、 /c が続きます。
https://cdn.ampproject.org/c/example.com/amp_document.html

そのあとは、元のURLから http:// を取り除いた example.com/amp_document.html で終わります。
https://cdn.ampproject.org/c/example.com/amp_document.html

同じAMPページをHTTPSで配信していたとします。
https://example.com/amp_document.html

AMPキャッシュのURLはこのようになります。
https://cdn.ampproject.org/c/s/example.com/amp_document.html

先ほどと似ていますが、コンテンツのタイプを表す /c のあとに、HTTPSを示す /s が入っています。

今度は、画像のAMPキャッシュURLを見てみましょう。

オリジナルの画像を次のURLで配信しています。
https://example.com/images/logo.png

AMPキャッシュのURLはこのようになります。
https://cdn.ampproject.org/i/s/example.com/images/logo.png

画像なのでコンテンツのタイプの部分が /i になっていることに気付いてください。
またHTTPSで配信しているので、/s が入ります。

AMPキャッシュの更新プロセス

簡単に言うと、AMPキャッシュの更新は、ユーザーにキャッシュを配信したときにオリジナルのコンテンツが更新されていれば、更新されたコンテンツをAMP CDNサーバーが自動で取得しキャッシュし直す仕組みになっています。
ただし新しいキャッシュが配信されるのは、その次のユーザーに対してです。

もう少し詳しいプロセスは次のようになります。

  1. ユーザーがAMPキャッシュをリクエストする(例: 検索結果のAMPカルーセルからアクセスする)
  2. そのユーザーには今保持しているキャッシュを返す
  3. 同時に、オリジナルのコンテンツが更新されていないかどうかをチェックしに行く(Max-Ageヘッダーなどを見る)
  4. オリジナルのコンテンツが更新されていれば、それを取得しキャッシュを最新の状態に保つ
  5. 次のユーザーには更新されたコンテンツのAMPキャッシュを返す
  6. オリジナルのコンテンツに更新がなければ、キャッシュも更新せずそのまま使い続ける

コンテンツに更新が発生していた場合は、そのユーザーには現在のキャッシュを返しますが、次のユーザーには新しいキャッシュを返すというのが特徴的ですね。
ユーザーが頻繁に閲覧するページほど、最新の状態に保たれやすくなります。
逆に、ユーザーが閲覧しないページのキャッシュはいつまでたっても古いままです。

なおサーバーに負荷をかけないために、HTMLドキュメントに対しては最低でも15秒以上の間隔を空けてリクエストします。
画像やリソースに対しては最低でも1分以上の間隔を空けてリクエストします(間隔は将来変更される可能性あり)。

AMPキャッシュの更新強制

説明したように、ユーザーが閲覧する限りはAMPキャッシュは自動で更新されます。
しかしオリジナルのコンテンツを更新し、キャッシュも今すぐにでも更新したいことがあるでしょう。
そんな状況では、ユーザーの閲覧を待たずともAMPキャッシュを更新することができます。

方法はとても簡単です。

あなたが、AMPキャッシュのURLにアクセスすればいいのです。
オリジナルのコンテンツが更新されていることをAMP CDNが認識できれば、キャッシュも更新されます。
ユーザーには新しくなったキャッシュが返されます。

AMPキャッシュのURLは、この記事の初めに説明しましたね(なので、AMPキャッシュURLのフォーマットの理解は大切なのです)。

この記事のAMPキャッシュを更新したければ、次のURLにアクセスします。

https://cdn.ampproject.org/c/s/www.suzukikenichi.com/blog/anatomy-of-amp-cache/amp/

AMPキャッシュの更新には、Fetch as Googleのインデックス送信を使ったりしなくていいのです。

AMPキャッシュの削除

AMPページまたはAMPページで使っている画像やリソースは、本体を削除すればいずれAMPキャッシュからも削除されます。
一般的なウェブページや画像と同じです。

ですが、キャッシュを至急で削除したい場合に利用できる仕組みがあります。
update-ping“を使います。

AMPキャッシュされている https://example.com/amp_document.html のAMPページを削除リクエストするには次のURLにアクセスします。

https://cdn.ampproject.org/update-ping/c/s/example.com/amp_document.html

AMPキャッシュのURLで、https://cdn.ampproject.org の次に /update-ping を差し込みます。

http://example.com/images/logo.png の画像のAMPキャッシュを削除リクエストするには、次のURLにアクセスします。

https://cdn.ampproject.org/update-ping/i/example.com/images/logo.png

update-ping に加えて、おさらいの目的も兼ねて以下にも注意してください。

  • コンテンツタイプが画像なので /i になる
  • オリジナルのURLはHTTPなので、/s は付かない

HTTPとHTTPSは連動しません。
キャッシュは別々に保存されています。

なお、update-pingを使ったURLに「アクセスする」と表現しましたが、正確には「GETリクエストを送信」します。
“204 No Content”のHTTPステータスコードが返ってきます。

update-ping を使うとキャッシュが自然に削除されるのを待つよりもずっと速くキャッシュを削除できます。

この記事でのAMPキャッシュに関する説明は以上です。

ブログ読者に向けた解説というよりは、僕自身のためのまとめの意味合いのほうが実は強かったりします(AMPキャッシュの更新方法について、何度か質問されたことがあった)。
公式ドキュメントには、AMPキャッシュに関する情報がほかにも書かれていますが、僕にとって重要な部分に絞って説明しました。
AMPキャッシュの仕組みに興味を持ったなら、公式ドキュメントもお読みください。

【追記】
Google検索からAMPキャッシュにアクセスした場合のURLのドメイン名は、cdn.ampproject.org ではなく www.google.com や www.google.co.jp になります。
ですが実態は同じで、キャッシュは cdn.ampproject.org から読み込んでいます。