Я уже пару дней пытаюсь обновить кэшированные страницы AMP на моем сайте, но безрезультатно.
Хотя документация по обновлению кэша существует, вероятно, она была написана инженером Google и, как следствие, не самое легкое чтение.
https://developers.google.com/amp/cache/update-cache
Я следовал инструкциям в меру своих возможностей. Я создал закрытый ключ и ключ publi c. Создал файл signature.bin и проверил его, используя процедуру, описанную в собственной документации Google.
~ $ openssl dgst -sha256 -signature signature.bin -verify publi c -key.pem url.txt
Проверено OK
Publi c -key.pem был переименован в apikey.pub и загружен в следующий каталог:
https://irecover.ca/.well-known/amphtml/apikey.pub
Чтобы проверить, что при копировании не было проблем, я проверил подпись с помощью следующего:
$ openssl dgst -sha256 -signature signature.bin -verify <(curl <a href="https://irecover.ca/.well-known/amphtml/apikey.pub" rel="nofollow noreferrer">https://irecover.ca/.well-known/amphtml/apikey.pub ) url.txt
% Всего% полученных%% Xferd Средняя скорость Время Время Время Текущий
Загрузка загрузки Всего отработанных левых скоростей
100 450 100 450 0 0 2653 0 -: -: - -: -: - -: -: - 2662
Проверено OK
Теперь я конвертирую файл подписи в base64 и замените / на _ и + на -
cat signature.bin | base64> signature.b64
sed 's /// _ / g' signature.b64> signature.b64a
sed 's / + / - / g' signature.b64a> подпись. b64b
sed 's / = // g' signature.b64b> signature.b64 c
cat signature.b64 c | tr -d '\ n'> signature.b64
Я создал скрипт, который делает URL-адрес для кэша обновлений. Он также создает отметку времени прямо в этот момент и использует ее для переменной amp_ts (таким образом, значение amp_ts никогда не истекает более чем на 1 секунду). Затем я добавляю это в конец запроса, который должен быть обработан созданным мной сценарием, так что это выглядит так:
https://irecover-ca.cdn.ampproject.org/update-cache/c/s/irecover.ca/article?amp_action=flush&_ts=1581446499&_url_signature=KDaKbX0AbVbllwkTpDMFPOsFCRNw2sbk6Vd552bbG3u5QrecEmQ1SoMzmMR7iSXinO7LfM2bRCgJ1aD4y2cCayzrQuICrGz6b_PH7gKpo6tqETz06WmVeiP89xh_pBOu-pyN5rRHf0Pbu8oRkD2lRqgnGrLXDfIrFTTMRmHlO0bsa8GknyXL8RNXxk9ZQaufXAz-UJpoKaZBvT6hJWREAzxoZ-rGnDPVaC3nlBCu3yPorFcTbbr0CBz2svbfGgAYLQl54lLQmUpxI8661AEe1rdOLqAyLIUb4ZiSbO65-PmIkdZWVPFHMdbpSv4GMNdvodleCWBfMAcG2C09v-LR6g
Однако это всегда приводит к одному и тому же коду ошибки от Google.
Недопустимый ключ publi c из-за ошибки при проглатывании: ошибка 404 или 410 от источника
Кто-нибудь знает, что я делаю неправильно?