記事一覧

AMPページのキャッシュをmax-ageヘッダーで更新する

2017-01-23 14:06

前回ではGoogleにキャッシュされたAMPページを手動で削除する方法を紹介致しました。

ただ、ページを更新するたびに手動でキャッシュをクリアにしなければならないので
非常に手間がかかります。

今日はampページを表示する際にレスポンスヘッダーにmax-ageを指定することで
Googleのキャッシュを定期的に更新するようにするやり方をご紹介します。

Google Amp Cacheのページによると

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が送信されるようになります。

この例ではnginxのconfファイルのlocationディレクティブの中で指定をしています。
もし”amp”というクエリがあったらexpresを1分に設定するというものです。
この状態で設定したページにリクエストすると下記のようになります。

このようにExpiresが指定されて、Cache-Controlにmax-ageが指定されます。
GoogleのAMPのキャッシュに関してはまだ日本語のページがないため不便ですね・・・。
ご参考になれば幸いです。

参考: Google Groupのフォーラム

update-pingを使ったAMPページのキャッシュの消し方

2017-01-20 20:17

弊社のサイトでも実験的にAMPを使ったページの配信を行っております。
AMPは既にご存知の方も多いと思われますが Accelerated Mobile Pages の略で、
通信速度が安定しないスマートフォンでも高速にページを閲覧できるようにした技術で
以前このブログでもご紹介したこともあります。

AMPによって実装されたページはGoogleによってキャッシュされ
検索結果からのリンクはGoogleのドメインから
キャッシュされたページ・コンテンツが配信されます。

キャッシュは定期的に消えるようですが
急いで消したい場合にちょっと手間取ってしまったので
簡単にまとめてみたいと思います。

curlコマンドで消す

“204 No Content” が返ります。
エンジニアの方はこっちの方が安心な感じがしますね。

ブラウザを使って消す

にアクセスしてください。
CURLコマンドのURLとまったく同じです。

Chromeだと何も表示されないどころが開いたタブが自動的に閉じたりします。
“204 No Content”のレスポンスヘッダーを受け取ったときの
挙動はブラウザによるようです。

AMPのキャッシュの仕組み

cdn.ampproject.orgというホストにキャッシュが蓄積されています。
削除するのもこのホストに対して行います。

http://www.hogehoge.com/amp/hogehoge.html

がキャッシュされてgoogleの検索結果からリンクされているURLは

https://www.google.co.jp/amp/www.hogehoge.com/amp/hogehoge.html

になります。このページをデベロッパーツールで開くと

https://cdn.ampproject.org/v/www.hogehoge.com/amp/hogehoge.html&amp_js_v=6

のようなものがロードされていることが分かります。
これがキャッシュ的なもののようです。

これを削除しようとしたら、上記で紹介したようにCURLコマンドがブラウザを使って

にリクエストすれば良いようです。

“www.hogehoge.com/amp/hogehoge.html” の前についている”/c/“は
キャッシュされているコンテンツがドキュメントであることを示しています。

それに対して /update-ping/ というコマンドめいたパスを前につけてあげると
キャッシュが消えるという仕組みです。

上記のようにキャッシュされているコンテンツには
コンテンツの種類によってプレフィックスがつきます。

  • ドキュメントはc
  • 画像はi
  • フォントなどその他のリソースはr

なので

http://www.hogehoge.com/amp/img/piyopiyo.png

という画像がキャッシュされると

https://cdn.ampproject.org/i/www.hogehoge.com/amp/img/piyopiyo.png

となります。
これを削除したければ

でリクエストすればいいことが分かります。
なお、オリジナルがHTTPSの場合はちょっと話が変わるのでまたの機会に。

次回はhttpのレスポンスヘッダーを使って自動的にキャッシュが更新されるようにする設定についてご紹介したいと思います。

ご参考になれば幸いです。

参考

もうすぐクリスマス

2016-12-12 12:14

今年のクリスマスは3連休!(^-^)

クリスマスはエデュもお休みですが、それまで少しでもクリスマスムードを楽しめるように…

今年もツリーをかざりました!

今年は、手作りリースも飾り付け♪エントランスが一気に華やぎました。

リース

 

 

 

 

キラキラ光るツリーを見ていると、なんだかわくわくしてきます。

そして、このクリスマスの3連休にエデュは移転に向け引っ越し作業を行います。

ツリー

 

 

 

新しいオフィスはまた次回のブログで紹介したいと思います☆彡

 

移転のお知らせ

2016-12-07 11:06

map

この度弊社は12月26日に下記住所に移転し、

新事務所において営業を開始する運びとなりましたのでご案内申し上げます。

building_image【新住所】

〒151-0053
東京都渋谷区代々木1-12-8 4階

これを機会に、社員一同一層社業に専念いたしますので、

今後とも変わらぬご愛顧を賜りますようお願い申し上げます。

Slack and Trello: integration problem (multiple connection setting)

2016-12-01 19:50

Hello. This is Takeshi in developer team.

Slack is most major team-chat application all over the world especially among developers. Also, Trello is a smart project management system with the virtual task board, so-called “Kanban”.

I have a confident these applications make developer’s task to be more easy to handle, understandable and to reduce communication cost. Most important thing is integration with each applications.

On these days, I’ve tried them. but I faced a little trouble about the connection. It is a limitation of connection: “Slack cannot accept notification from multiple trello’s boards under one trello’s team”. In other words, I call it as a problem of “one slack team, one trello board”. As a result, I can realize it was wrong. You can accept notification of multiple board with one slack team’s channel.

I find out it was from my foolish mistake. I hesitated to share of it, but I guess some people got in same trouble. Here, I would like to introduce it.

>>続きを読む