はじめに
AMPに対応したページは、Google側のプロバイダにキャッシュし、そこからキャッシュされたページが配信され、ウェブページの高速化を実現しています。
そこで、キャッシュされたページをどのように更新するのかというのが問題となってきます。
この記事では、そのAMPキャッシュをupdate-cacheという仕組みを使い、手動で更新する方法を記載します。
WordPressなんかでは、記事を更新したときにAMPページのキャッシュも更新するようにしたり対応する必要があります。
手順
- 秘密鍵、公開鍵を作成する
- 公開鍵をアプリケーションサーバーに設置する
- update-cache をリクエストするプログラムの作成
- update-cache を実行
秘密鍵、公開鍵を作成する
ローカルで秘密鍵、公開鍵を作成する。
$ openssl genrsa 2048 > private-key.pem
$ openssl rsa -in private-key.pem -pubout > apikey.pub
公開鍵をアプリケーションサーバーに設置する
公開鍵をサーバーに設置します。以下の場所に置いてください。
/ドキュメントルート/.well-known/amphtml/apikey.pub
WEBサーバーの設定ファイルに、コンテンツタイプに「text/plain」を追加する必要があります。
Nginxの場合の設定方法です。
types {
# 末尾に追加
text/plain pub;
}
nginx再起動
$ sudo systemctl restart nginx
公開鍵「apikey.pub」にアクセス可能であること、コンテンツタイプが「text/plain」になっていることを確認します。
$curl -I https://example.com/.well-known/amphtml/apikey.pub
HTTP箇所とcontent-type箇所が、以下のように表示されていれば問題なく設定できています。
HTTP/2 200
content-type: text/plain
update-cache をリクエストするプログラムの作成
本来であれば、Googleの公式ドキュメント「AMPコンテンツを更新する」を参照して、手動で作成した鍵を使いupdate-cacheリクエストを行うのですが、一連の流れをシェルスクリプトで作成してくれている先人がいるので、ありがたく使用させていただきましょう。
https://github.com/sizaki30/google-amp-update-cache
スクリプトをダウンロードしたら、秘密鍵の場所を変更します。
# private_keyの部分を変更する。
private_key='/秘密鍵の場所をフルパスで指定/private-key.pem'
スクリプトをサーバーの任意の場所にアップロードしてください。
update-cache を実行
AMPキャッシュを更新したいページのURLを指定して、スクリプトを実行します。(URLはクオートすることをオススメします)「OK」と表示されれば update-cache リクエスト成功です。
$sudo sh google-amp-update-cache.sh 'https://example.com/test.html'
OK