AMPページのキャッシュをmax-ageヘッダーで更新する
2017-01-23 14:06
前回ではGoogleにキャッシュされたAMPページを手動で削除する方法を紹介致しました。
ただ、ページを更新するたびに手動でキャッシュをクリアにしなければならないので
非常に手間がかかります。
今日はampページを表示する際にレスポンスヘッダーにmax-ageを指定することで
Googleのキャッシュを定期的に更新するようにするやり方をご紹介します。
It uses the origin’s caching headers, such as Max-Age, as hints in deciding whether a particular document or resource is stale. When a user makes a request for something that is stale, that request causes a new copy to be fetched, so that the next user gets fresh content.
とあります。つまり、max-ageヘッダーを送信することによってキャッシュが古いかどうかを
Googleが判断してくれるようです。古い場合は新しくオリジンページにリクエストしなおして
新しいキャッシュを生成してくれるようです。(ただし、新しいキャッシュからページを配信してくれるのは次のリクエストからになるようです。)
To limit the amount of load it generates for publisher sites, the Google AMP Cache considers any document fresh for at least 15 seconds, and any resource fresh for at least 1 minute. Note that those numbers may change in the future, as we tune the cache for optimum balance between freshness and load on publisher sites.
また、max-ageで指定できるのは15秒以上で、最低でも1分でリフレッシュされるようですので
しきい値としてはこの間を取ることになるかと思います。
ただ、将来的にはこのしきい値は見直される可能性もあるとのことでした。
Nginxでmax-ageを実装する場合
Nginxでは下記の設定を入れることでmax-ageが送信されるようになります。
1 2 3 4 5 |
if ($query_string ~ 'amp') { set $expire '1m'; } expires $expire; |
この例ではnginxのconfファイルのlocationディレクティブの中で指定をしています。
もし”amp”というクエリがあったらexpresを1分に設定するというものです。
この状態で設定したページにリクエストすると下記のようになります。
1 2 3 4 5 6 7 8 9 10 |
curl --head 'http://www.hogehoge.com/hoge/?amp' HTTP/1.1 200 OK Server: nginx Date: Mon, 23 Jan 2017 04:59:54 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 32183 Connection: keep-alive Expires: Mon, 23 Jan 2017 05:00:54 GMT Cache-Control: max-age=60 |
このようにExpiresが指定されて、Cache-Controlにmax-ageが指定されます。
GoogleのAMPのキャッシュに関してはまだ日本語のページがないため不便ですね・・・。
ご参考になれば幸いです。