Используйте запрос 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&_ts=<ts_val>&_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 запроса (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 или удалять его, если он больше не представлен в домене источника. Чтобы выполнить одно из этих действий, следуйте инструкциям ниже.
- Извлеките следующий файл:
https://cdn.ampproject.org/caches.json
- Выполните перебор элементов массива
caches
в этом файле JSON. - Выберите кеши (
caches
), в которых хотите сохранять контент. - Выполните запрос
update-cache
с параметромupdateCacheApiDomainSuffix
из каждого элементаcache
. - Составьте нужные URL, придерживаясь следующего формата:
https://example-com.<cache.updateCacheApiDomainSuffix>/update-cache/c/s/example.com/article?amp_action=flush&_ts=<ts_val>&_url_signature=<sig_val>
Создание ключа RSA
На сайте проекта OpenSSL доступны инструменты в формате командной строки, позволяющие создавать асимметричные ключи RSA и управлять ими. Вы также можете создавать и настраивать такие ключи с помощью программных средств, используя библиотеку OpenSSL или аналогичный криптографический API (модуль crypto Node.js, NSS или GnuTLS).
- Создайте пару ключей RSA в текстовом формате PEM. Пример:
openssl genrsa 2048 > private-key.pem openssl rsa -in private-key.pem -pubout >public-key.pem
- Разместите открытый ключ в домене, который будет обновляться, по следующему адресу:
https://example.com/.well-known/amphtml/apikey.pub
У URL должен быть префикс https. Ключ должен быть доступен анонимным пользователям.
- Подпишите запрос
update-cache
при помощи закрытого ключа. Пример: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
В файл signature.bin будет помещена подпись RSA в виде двоичной последовательности.
- Выполните проверку подписи с помощью открытого ключа:
openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
- Закодируйте подпись RSA с помощью разновидности Base64, подходящей для использования в Интернете:
cat signature.bin | base64 -w0 | tr '/+' '_-' | tr -d '=' > base64.txt
- Добавьте закодированную подпись RSA к URL, воспользовавшись параметром запроса
amp_url_signature
:echo "$(cat url.txt)&_url_signature=$(cat base64.txt)"
Обновление ключа RSA
Если вы хотите обновить ключ RSA, то можете перейти к нему по ссылке AMP Cache. Через несколько часов ваш новый ключ будет просканирован Google. Ссылка AMP Cache выглядит так:
https://example-com.<cache.updateCacheApiDomainSuffix>/r/s/example.com/.well-known/amphtml/apikey.pub