varnish4 デバイス毎にキャッシュする

リクエストとキャッシュの紐づけ

Varnish4がリクエストをどういう風にキャッシュするか、良くわかっていなかったので調べてみた。参考にしたのは公式ドキュメント。しかし、思いっきりVarnish3用の内容なのでコピペ禁止。

Internally, when Varnish stores content in the cache it stores the object together with a hash key to find the object again. In the default setup this key is calculated based on the content of the Host header or the IP address of the server and the URL.

デフォルトのdefault.vclだと、リクエストを投げてきた人のIPアドレス・URL毎にキー・コンテンツをストアする、らしい。Varnish3のdefault.vclにはデフォルトで以下のように書かれている、らしい。URLとHost名またはIPアドレスの対を使っている。

Varnish4ではvcl_hashはlookupを返してはならないため、コピペすると構文エラーになる。
直後に改造の指針が書かれている。「vcl_recvでヘッダを付与して、vcl_hash で付与したヘッダをキーにハッシュ化する」という流れにすべし、とのこと。

デバイス毎にキャッシュする

以下の3種類の情報を使ってリクエストをハッシュ化する、というのが基本的な考え方。

  • URL
  • Host名(IPアドレス)
  • User-Agent>

ただし、User-Agentは種類が多すぎてキーがバラけ過ぎてしまう。用途に応じた粒度になるように”端末区分”を振りなおす。
例えば「iPhone」「Android」「その他」で表示内容が異なるサイトを展開する場合、端末区分として「iPhone」「Android」「その他」の3種類を設定する。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする