Aktualizacja treści AMP

Żądanie update-cache służy do aktualizowania i usuwania treści z Google AMP Cache. Obecnie żądanie update-cache zapewnia aktualizowanie treści w okresie max-age, czyli maksymalnym okresie, przez jaki zasób jest uznawany za aktualny.

Żądanie update-cache wymaga, by właściciel domeny podpisywał żądania kluczem RSA i udostępniał zgodny klucz publiczny pod standardowym adresem URL w domenie źródłowej.

Każdą wersję dokumentu aktualnie zapisaną w pamięci podręcznej można usunąć, przesyłając podpisane żądanie do AMP Cache. Żądanie update-cache należy wywołać pod tym adresem:

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

Parametry

Żądanie update-cache wymaga podania następujących parametrów i wartości:

Parametry
example-comexample.com

Wymagany

Nazwa domeny podana zgodnie z formatami używanymi w ramach formatu URL pamięci podręcznej AMP.
<cache.updateCacheApiDomainSuffix>

Wymagany

Nazwa domeny AMP Cache. Więcej informacji znajdziesz w sekcji Wywoływanie żądania update-cache.
amp_ts=<ts_val>

Wymagany

Ten parametr reprezentuje sygnaturę czasową (w czasie uniksowym), która służy do zapobiegania atakom metodą powtórzenia. Wartość powinna być bieżącą godziną wyrażoną w sekundach i musi być zakresie jednej minuty przed bieżącą godziną lub po niej.
amp_url_signature=<sig_val>

Wymagany

Ten parametr reprezentuje podpis RSA całej ścieżki żądania (patrz Generowanie klucza RSA), w tym amp_actionamp_ts, ale nie zawiera samego podpisu.

Wskazówki

Przestrzegaj tych wskazówek dotyczących żądania update-cache:

  • Nazwa hosta pamięci podręcznej (cdn.ampproject.org) jest wykluczona z podpisu, by umożliwić wysyłanie tego samego podpisanego żądania do wielu operatorów pamięci podręcznej AMP.
  • Aby umożliwić weryfikację podpisu, należy udostępniać publiczny klucz RSA w stałym miejscu w domenie dokumentu AMP (o tym, jak wygenerować klucz, przeczytasz w sekcji Generowanie klucza RSA). Przykład:
    https://example.com/.well-known/amphtml/apikey.pub
  • Klucz publiczny nie może być analizowany przez roboty.
  • Adres URL musi zaczynać się od HTTPS.
  • Podaj dokładnie tę domenę, która ma być zaktualizowana, a nie subdomenę lub domenę nadrzędną.
  • Klucz opublikuj w formacie PEM i udostępniaj jako treść typu „text/plain”.
  • Pamięć podręczna AMP zawsze pobiera klucz publiczny z domeny, z której pochodzi żądanie, niezależnie od domeny podanej przez dokument w tagu rel=canonical Jeśli domena pierwotna określa przekierowanie HTTP do miejsca, które ma być usunięte, z pamięci podręcznej zostanie usunięta tylko żądana ścieżka, a nie cel przekierowania.

Aktualizowanie i usuwanie treści

Używając żądania update-cache, można zaktualizować lub trwale usunąć treść z Google AMP Cache, gdy treść zostanie usunięta z pierwotnego miejsca. Aby zaktualizować lub usunąć treści, wykonaj te czynności:

  1. Pobierz ten plik:
    https://cdn.ampproject.org/caches.json
  2. Przejrzyj wpisy w żądaniach caches w pliku JSON.
  3. Zaznacz żądania caches, które mają być obsługiwane.
  4. Wywołaj żądanie update-cache, używając parametru updateCacheApiDomainSuffix z każdego wpisu cache.
  5. Utwórz adresy URL w tym formacie:
    https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&amp_ts=<ts_val>&amp_url_signature=<sig_val>

Generowanie klucza RSA

Projekt OpenSSL udostępnia narzędzia wiersza poleceń służące do generowania asymetrycznych kluczy RSA i zarządzania nimi. Klucze można również wygenerować programowo z użyciem biblioteki OpenSSL lub równoważnego kryptograficznego interfejsu API (node-crypto, NSS lub GnuTLS) i w ten sam sposób nimi zarządzać.

  1. Wygeneruj parę kluczy RSA w tekstowym formacie PEM:
    openssl genrsa 2048 > private-key.pem
    openssl rsa -in private-key.pem -pubout >public-key.pem
  2. Opublikuj klucz publiczny w domenie, która ma być odświeżana, w następującym miejscu:
    https://example.com/.well-known/amphtml/apikey.pub

    Adres URL musi rozpoczynać się od HTTPS. Klucz musi być publicznie dostępny dla anonimowych użytkowników.

  3. Użyj klucza prywatnego do podpisania żądania update-cache. Przykład:
    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

    Wynikiem skryptu signature.bin jest binarny podpis RSA.

  4. Zweryfikuj podpis, używając klucza publicznego:
    openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
  5. Zakoduj binarny podpis RSA, używając bezpiecznej dla sieci wersji kodowania base64:
    cat signature.bin | base64 -w0 | tr '/+' '_-' | tr -d '=' > base64.txt
  6. Dołącz podpis RSA zakodowany w base64 do adresu URL, używając parametru zapytania amp_url_signature.
    echo "$(cat url.txt)&amp_url_signature=$(cat base64.txt)"

Aktualizacja klucza RSA

Jeśli chcesz zaktualizować klucz RSA, możesz uzyskać do niego dostęp, używając linku do pamięci podręcznej AMP, a Google zindeksuje nowy klucz RSA w ciągu kilku godzin. Link do AMP Cache:

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