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&_ts=<ts_val>&_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 unterupdate-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ßlichamp_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:
- Rufe die folgende Datei ab:
https://cdn.ampproject.org/caches.json
- Sieh dir die Einträge der
caches
in der JSON-Datei an. - Wähle die
caches
aus, die du unterstützen möchtest. - Ruf die
update-cache
-Anfrage von jedemcache
-Eintrag mitupdateCacheApiDomainSuffix
auf. - Erstelle die URLs im folgenden Format:
https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&_ts=<ts_val>&_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.
- 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
- 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.
- 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&_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.
- Verwende den öffentlichen Schlüssel, um die Signatur zu verifizieren:
openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
- 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
- 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