
fastcgi_cacheのコンフィグファイルの設定例の多くでは、モバイル・デバイスの場合はキャッシュを使わない設定が多いのですけど・・・
モバイルデバイスのページもキャッシュする方法を偶然見かけたのでメモしておきます。
Mobile aware cahcing
要点だけを紹介すると、
fastcgi_cache_key
キャッシュキーの設定の際にこのような設定をしていると思うのですけど:
fastcgi_cache_key "$scheme$request_method$host$request_uri";
ここに$mobile_cache_cookieを追加します。
fastcgi_cache_key
"$scheme$request_method$mobile_cache_cookie$host$request_uri";
振り分け設定
User-Agentで振り分けします。
多くのサンプルは、nochache=1などにしてキャッシュを使わないようになっていると思います。
if ($http_user_agent ~* "^.*(Android).*) {
set $mobile_cache_cookie "mobile=true";
}
if ($http_user_agent ~* "^.*(DocoMo).*" {
set $mobile_cache_cookie "mobile=true";
}
※ User-Agentのリストは短くしてます
スマホとガラケーは別キャッシュに
(テーマで表示を振り分けしていているので)このままですと、スマホとガラケーで同じになっちゃうのでキーを変えてしまいます。
if ($http_user_agent ~* "^.*(Android).*) {
set $mobile_cache_cookie "mobile=smartphone";
}
if ($http_user_agent ~* "^.*(DocoMo).*" {
set $mobile_cache_cookie "mobile=galapagos";
}
これで、PCとスマホとガラケーでもそれぞれキャッシュが使えます。