如何刷新AMP Cache?

时间:2018-05-28 13:37:13

标签: caching refresh amp-html accelerated-mobile-page

我有一个带有AMP的文章页面(在子域名上)。 现在我在一篇文章中做了一些修改。 如何重新加载此缓存的AMP(子)页?

正常版本: https://www.example.com/this-is-a-article-999

AMP-Version: https://amp.example.com/this-is-a-article-999

我执行以下步骤:

1。我在服务器上安装了openssl

2. 然后我生成了两个键

openssl genrsa 2048>私人key.pem

openssl rsa -in private-key.pem -pubout> public-key.pem

3. 我将公钥复制到子域(= AMP页面)并将其重命名为“apikey.pub”

因此可以通过浏览器访问公钥: https://amp.example.com/apikey.pub

4. 然后我创建了更新缓存请求,如下所示:

获取“date +%s”

的时间戳

echo -n> url.txt'/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&amp_ts=1526997689'cat url .txt | openssl dgst -sha256 -sign private-key.pem> signature.bin

5. 我使用公钥来验证签名:

openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt

我得到了followind错误: ==> 验证失败(!!!)

1 个答案:

答案 0 :(得分:1)

在步骤3中,公钥的放置是错误的。正确的是:https://amp.example.com/.well-known/amphtml/apikey.pub

验证问题似乎在第4步,因为在单行上调用了2个命令并生成无效输出。

解决方案是将其分为两部分:

echo -n >url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&amp_ts=1526997689' 
cat url.txt | openssl dgst -sha256 -sign private-key.pem >signature.bin

或添加&两个命令之间:

echo -n > url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&amp_ts=1526997689' & cat url.txt | openssl dgst -sha256 -sign private-key.pem > signature.bin

完整的序列就像这样:

openssl genrsa 2048 > private-key.pem
openssl rsa -in private-key.pem -pubout > public-key.pem
echo -n > url.txt '/update-cache/c/s/amp.example.com/this-is-a-article-999?amp_action=flush&amp_ts=1526997689'
cat url.txt | openssl dgst -sha256 -sign private-key.pem > signature.bin
openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt

,输出如下:

openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
Verified OK

另外一件事是,在生成签名后,必须使用web-safe variant of Base64将其附加到amp_url_signature参数的网址上。

最后,请务必查看文档的parameters部分,并根据AMP Cache URL Format生成网址。