デバイスによってコンテンツを出し分けたい場合のキャッシュについて。
構成
アプリケーションで返したコンテンツをVarnishでキャッシュする(Cache Proxyパターン)。
デバイスごとにコンテンツを出し分けたい場合、以下の処理が必要になる。
- アプリケーション
UA判定し、ページ(テンプレート)を出し分ける - Varnish
UA判定し、キャッシュを出し分ける
実装
自前でライブラリを作ってもいいのですが、PHPに関しては、以下のライブラリが使えます。
https://github.com/serbanghita/Mobile-Detect
様々なフレームワークに対応したモジュールがありますし、なんと、Varnishのモジュールも提供されています!(3rd party)
https://github.com/willemk/varnish-mobiletranslate
これで、Varnishと(PHP)アプリケーションのUA判定を統一して管理することが出来て便利です!
※ちなみに、VarnishとアプリケーションのUA判定が統一されていないと、キャッシュの不具合が起きるので要注意です。