AMP-Inhalte aktualisieren

Mit der update-cache-Anfrage kannst du Inhalte im AMP-Cache von Google aktualisieren oder entfernen. Derzeit stellt update-cache nur sicher, dass der Inhalt vor Ablauf seines max-age aktualisiert wird. Das ist die maximale Zeitspanne, in der eine Ressource als aktuell gilt.

Bei einer update-cache-Anfrage muss der Domaininhaber die Anfragen mit einem RSA-Schlüssel signieren und den entsprechenden öffentlichen Schlüssel über eine Standard-URL in der Quelldomain bereitstellen.

Du kannst jede Version eines Dokuments, die momentan im Cache gespeichert ist, entfernen. Sende dazu eine signierte Anfrage an den AMP-Cache. Die update-cache-Anfrage wird unter dieser Adresse aufgerufen:

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

Parameter

In einer update-cache-Anfrage müssen die folgenden Parameter und Werte angegeben werden:

Parameter
example-com und example.com

Erforderlich

Der Domainname in den unter URL-Format des AMP Cache angegebenen Formaten.
<cache.updateCacheApiDomainSuffix>

Erforderlich

Der Domainname des AMP-Cache. Weitere Informationen findest du unter update-cache-Anfrage aufrufen.
amp_ts=<ts_val>

Erforderlich

Dieser Parameter steht für einen Zeitstempel der UNIX-Epoche, mit dem Replay-Angriffe verhindert werden. Der Wert sollte der aktuellen Zeit in Sekunden entsprechen und darf maximal eine Minute vor oder nach der aktuellen Uhrzeit liegen.
amp_url_signature=<sig_val>

Erforderlich

Dieser Parameter steht für die RSA-Signatur des gesamten Anfragepfads (siehe RSA-Schlüssel generieren), einschließlich amp_action und amp_ts, aber ohne die Signatur selbst.

Richtlinien

Du musst die Richtlinien für update-cache einhalten:

  • Der Hostname des AMP-Cache (cdn.ampproject.org) wird nicht in der Signatur verwendet, damit dieselbe signierte Anfrage an mehrere AMP-Cache-Operatoren gesendet werden kann.
  • Für die Signaturprüfung müssen Sie den öffentlichen RSA-Schlüssel an einem bestimmten Ort in der Domain des AMP-Dokuments bereitstellen. Wie Sie einen Schlüssel generieren, erfahren Sie unter RSA-Schlüssel generieren. Beispiel:
    https://example.com/.well-known/amphtml/apikey.pub
  • Der öffentliche Schlüssel darf nicht durch eine robots.txt-Datei blockiert werden.
  • Für die URL muss HTTPS verwendet werden.
  • Du musst die Domain angeben, die du aktualisieren möchtest, keine Sub- oder Superdomain.
  • Sie müssen den Schlüssel im PEM-Format veröffentlichen und mit dem Inhaltstyp "text/plain" bereitstellen.
  • Der AMP Cache ruft den öffentlichen Schlüssel immer von derselben Anfragedomain ab, unabhängig davon, welche Domain im Dokument in einem beliebigen Tag vom Typ "rel=canonical" angegeben ist. Wenn die Quelldomain eine HTTP-Weiterleitung an dem Ort bereitstellt, der geleert werden soll, wird nur der angeforderte Pfad aus dem Cache entfernt und nicht das Ziel der Weiterleitung.

Inhalte aktualisieren oder entfernen

Du kannst mit update-cache Inhalte aktualisieren oder endgültig aus dem AMP-Cache von Google entfernen, nachdem der Inhalt aus der Quelle entfernt wurde. Führe die folgenden Schritte aus, um Inhalte zu aktualisieren oder zu entfernen:

  1. Rufe die folgende Datei ab:
    https://cdn.ampproject.org/caches.json
  2. Sieh dir die Einträge der caches in der JSON-Datei an.
  3. Wähle die caches aus, die du unterstützen möchtest.
  4. Ruf die update-cache-Anfrage von jedem cache-Eintrag mit updateCacheApiDomainSuffix auf.
  5. Erstelle die URLs im folgenden Format:
    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-Schlüssel generieren

OpenSSL stellt Befehlszeilentools zum Generieren und Verwalten asymmetrischer RSA-Schlüssel zur Verfügung. Du kannst auch RSA-Schlüssel generieren und diese programmatisch über die OpenSSL-Bibliothek oder eine äquivalente Krypto-API verwalten, zum Beispiel Node-Crypto, NSS oder GnuTLS.

  1. Generiere ein Paar RSA-Schlüssel im PEM-Textformat:
    openssl genrsa 2048 > private-key.pem
    openssl rsa -in private-key.pem -pubout >public-key.pem
  2. Stelle den öffentlichen Schlüssel in der zu aktualisierenden Domain unter folgendem Pfad bereit:
    https://example.com/.well-known/amphtml/apikey.pub

    Für die URL muss HTTPS verwendet werden. Der Schlüssel muss für anonyme Nutzer öffentlich zugänglich sein.

  3. Verwende den privaten Schlüssel, um die update-cache-Anfrage zu signieren. Beispiel:
    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

    Die Ausgabe an signature.bin ist eine binäre RSA-Signatur.

  4. Verwende den öffentlichen Schlüssel, um die Signatur zu verifizieren:
    openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
  5. Codiere die binäre RSA-Signatur mit der für das Web geeigneten Variante von Base64:
    cat signature.bin | base64 -w0 | tr '/+' '_-' | tr -d '=' > base64.txt
  6. Hänge die Base64-codierte RSA-Signatur mit dem Suchparameter amp_url_signature an die URL an.
    echo "$(cat url.txt)&_url_signature=$(cat base64.txt)"

RSA-Schlüssel aktualisieren

Wenn du deinen RSA-Schlüssel aktualisieren möchtest, kannst du über den AMP Cache-Link darauf zugreifen. Google kann deinen neuen RSA-Schlüssel innerhalb einiger Stunden crawlen. Das ist der Link:

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