Как обновлять AMP-контент

Используйте запрос update-cache, чтобы обновлять и удалять контент в Google AMP Cache. На сегодняшний день update-cache обеспечивает только обновление контента в пределах интервала max-age, определяющего максимальный период времени, в течение которого тот или иной ресурс считается актуальным.

Владельцу домена необходимо подписывать запросы update-cache с помощью ключа RSA и публиковать соответствующий открытый ключ на странице со стандартным URL в домене источника.

Вы можете удалить текущую кешированную версию документа, отправив запрос с цифровой подписью в Google AMP Cache. Пример адреса с таким запросом 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-com и example.com

Обязательный параметр

Доменное имя, соответствующее формату URL контента в Google AMP Cache.
<cache.updateCacheApiDomainSuffix>

Обязательный параметр

Доменное имя AMP Cache. Подробнее о выполнении запроса update-cache
amp_ts=<ts_val>

Обязательный параметр

Этот параметр представляет собой временную метку UNIX, используемую для защиты от атак повторного воспроизведения. В качестве значения должно быть указано время в секундах, отличающееся от текущего в ту или иную сторону не более чем на минуту.
amp_url_signature=<sig_val>

Обязательный параметр

Этот параметр представляет собой RSA-подпись всего URL запроса, включая amp_action и amp_ts, но исключая саму подпись. Подробнее о создании ключа RSA

Правила

Вы должны соблюдать правила в отношении update-cache:

  • Имя хоста AMP Cache (cdn.ampproject.org) исключается из цифровой подписи, чтобы один запрос с подписью можно было отправлять нескольким операторам AMP Cache.
  • Для осуществления проверки подписи необходимо, чтобы открытый ключ RSA был постоянно размещен на одном и том же месте в домене AMP-документа (см. также раздел Создание ключа RSA). Пример:
    https://example.com/.well-known/amphtml/apikey.pub
  • Не следует блокировать доступ к открытому ключу в файле robots.txt.
  • У URL должен быть префикс https.
  • Следует указывать в точности тот домен, который вы хотите обновить, а не домен верхнего или нижнего уровня.
  • Вы должны опубликовать ключ в формате PEM со значением "text/plain" в поле заголовка Content-Type.
  • AMP Cache всегда получает открытый ключ из домена, указанного в запросе, независимо от того, какой домен отмечен в документе с помощью атрибута rel="canonical". Если домен источника выполняет переадресацию HTTP в документе, кешированная версия которого подлежит удалению, то оно производится строго в соответствии с запросом и не затрагивает целевой URL переадресации.

Обновление и удаление контента

С помощью update-cache вы можете обновлять или навсегда удалять из Google AMP Cache контент, удаленный из источника. Как это делать:

  1. Осуществите извлечение следующего файла:
    https://cdn.ampproject.org/caches.json
  2. Выполните перебор элементов массива caches в этом файле JSON.
  3. Выберите кеши (caches), в которых хотите сохранять контент.
  4. Выполните запрос update-cache для каждого элемента кеша (updateCacheApiDomainSuffix) с соответствующим параметром 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

На сайте проекта OpenSSL доступны инструменты в формате командной строки, позволяющие создавать асимметричные ключи RSA и управлять ими. Вы также можете создавать и настраивать такие ключи с помощью программных средств, используя библиотеку OpenSSL или аналогичный криптографический API (модуль crypto Node.js, 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=1484941817' && cat url.txt | openssl dgst -sha256 -sign private-key.pem >signature.bin

    В файл signature.bin будет помещена подпись RSA в виде двоичной последовательности.

  4. Закодируйте подпись RSA с помощью разновидности Base64, подходящей для использования в Интернете.
  5. Добавьте закодированную подпись RSA к URL, воспользовавшись параметром запроса amp_url_signature.
  6. Выполните проверку подписи при помощи открытого ключа:
    openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt

Обновление ключа RSA

Если вы хотите обновить ключ RSA, то можете перейти к нему по ссылке AMP Cache. Через несколько часов ваш новый ключ будет просканирован Google. Ссылка AMP Cache выглядит так:

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