ページ

2015年9月24日

ちょい足しレシピ:fastcg_cacheでモバイルデバイスもキャッシュする


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とスマホとガラケーでもそれぞれキャッシュが使えます。