AMP コンテンツを更新する

Google AMP Cache のコンテンツを更新、削除するには、update-cache リクエストを使用します。現在のところ、update-cache を使用した場合、max-age(リソースが最新と見なされる時間の最大範囲)以内のコンテンツのみが更新されます。

update-cache リクエストを使用する場合、ドメイン オーナーが RSA 鍵を使用してリクエストに署名し、元のドメインの標準 URL から対応する公開鍵を提供する必要があります。

署名済みのリクエストを AMP キャッシュに発行することで、現在キャッシュされているバージョンのドキュメントをフラッシュできます。update-cache リクエストは次のアドレスで呼び出されます。

https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&amp_ts=<ts_val>&amp_url_signature=<sig_val>

パラメータ

update-cache リクエストでは、以下のパラメータと値を指定する必要があります。

パラメータ
example-comexample.com

必須

AMP Cache の URL フォーマットで使用されているフォーマットに沿って指定されたドメイン名。
<cache.updateCacheApiDomainSuffix>

必須

AMP Cache のドメイン名。詳しくは、update-cache リクエストの呼び出しについての記事をご覧ください。
amp_ts=<ts_val>

必須

このパラメータは UNIX エポック タイムスタンプを表し、再生攻撃を防ぐために使用されます。値には現在時刻を秒単位で指定する必要があります。許容誤差は現在時刻の前後 1 分以内です。
amp_url_signature=<sig_val>

必須

このパラメータは、リクエストパス全体の RSA 署名を表します(RSA 鍵を生成するを参照)。amp_actionamp_ts を含みますが、署名自体は除きます。

ガイドライン

update-cache ガイドラインに従ってください。

  • AMP Cache のホスト名(cdn.ampproject.org)を署名から取り除いて、署名済みの同じリクエストを複数の AMP Cache 演算子に送信できるようにします。
  • 署名を検証するには、AMP ドキュメントのドメイン上の所定の場所で RSA 公開鍵を提供する必要があります(RSA 公開鍵の生成方法については、RSA 鍵を生成するをご覧ください)。例:
    https://example.com/.well-known/amphtml/apikey.pub
  • 公開鍵を robots.txt でブロックしないでください。
  • URL には HTTPS を指定する必要があります。
  • サブドメインやスーパー ドメインではなく、更新対象の正確なドメインを指定する必要があります。
  • 鍵を PEM 形式で公開し、コンテンツ タイプに「text/plain」を指定して鍵を提供する必要があります。
  • AMP キャッシュは、ドキュメントで rel=canonical タグによって指定されたドメインに関係なく、常にリクエストの同じドメインから公開鍵を取得します。元のドメインが HTTP リダイレクトをフラッシュ先の場所で提供する場合、リクエストされたパスのみがキャッシュからフラッシュされ、リダイレクトのターゲットはフラッシュされません。

コンテンツを更新または削除する

update-cache を使用することで、コンテンツが元のページから削除された後でも、Google AMP キャッシュのコンテンツを更新したり完全に削除したりできます。コンテンツを更新または削除する手順は次のとおりです。

  1. 次のファイルを取得します。
    https://cdn.ampproject.org/caches.json
  2. JSON ファイルの caches エントリ内のエントリを反復処理します。
  3. サポートする caches を選択します。
  4. cache エントリの updateCacheApiDomainSuffix を使用して update-cache リクエストを呼び出します。
  5. 次のフォーマットで URL を構成します。
    https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&amp_ts=<ts_val>&amp_url_signature=<sig_val>

RSA 鍵を生成する

非対称の RSA 鍵を生成、管理するためのコマンドライン ツールが OpenSSL プロジェクトで提供されています。RSA 鍵は、OpenSSL ライブラリや、同等の暗号化 API(node-crypto、NSS、GnuTLS)などを使用して、プログラムによって生成、管理することもできます。

  1. RSA 鍵のペアを、次のようにテキスト PEM 形式で生成します。
    openssl genrsa 2048 > private-key.pem
    openssl rsa -in private-key.pem -pubout >public-key.pem
  2. 次の場所の更新対象のドメインに公開鍵を公開します。
    https://example.com/.well-known/amphtml/apikey.pub

    URL には HTTPS を指定する必要があります。公開鍵は、匿名ユーザーがアクセスできる必要があります。

  3. 秘密鍵を使用して update-cache リクエストに署名します。次に例を示します。
    echo -n > url.txt "/update-cache/c/s/example.com/article?amp_action=flush&amp_ts=$(date +%s)" && cat url.txt | openssl dgst -sha256 -sign private-key.pem > signature.bin

    signature.bin への出力はバイナリ形式の RSA 署名です。

  4. 公開鍵を使用して署名を検証します。
    openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
  5. base64 の web-safe バリエーションを使用して、バイナリ形式の RSA 署名をエンコードします。
    cat signature.bin | base64 -w0 | tr '/+' '_-' | tr -d '=' > base64.txt
  6. amp_url_signature クエリ パラメータを使用して、base64 エンコード形式の RSA 署名を URL に追加します。
    echo "$(cat url.txt)&amp_url_signature=$(cat base64.txt)"

RSA 鍵を更新する

RSA 鍵を更新する場合、AMP キャッシュ リンクを介して RSA 鍵にアクセスできます。Google は更新後数時間以内に新しい RSA 鍵をクロールする場合があります。以下に AMP キャッシュのリンクを示します。

https://example-com.<cache.updateCacheApiDomainSuffix>/r/s/example.com/.well-known/amphtml/apikey.pub