jpmobileを使いながらキャッシュも実装したい!

こんばんは,@h3_potetoです.

インターファームのサービスは,ほとんどがRailsで動いています. でも,それなりにアクセス数があるサービスでは,どうしても速度の関係でキャッシュしたい気持ちが抑えられない.

Railsのキャッシュ機能

そんな人たちのためにRailsでは3種類のキャッシュが用意されています.

  • ページキャッシュ
  • アクションキャッシュ
  • フラグメントキャッシュ

キャッシュというからには,一度レンダリングしたものを取っておいて,それを表示するという形を取っています. ページキャッシュなどは,public以下にhtmlファイルを生成して,それを呼び出すという実に速そうな方式です.

実はjpmobileを使いたい

昨今,インターネット上のサイトを見ている人は,PCだけでなくスマホを使う人が非常に多い. そういう人に対しては,しっかりスマホの画面に合わせたサイトを表示させたいという欲求もあります.

そのために,Railsではよくjpmobileを使って,デバイスによってビューを切り替えるというスマートなやり方を取っている.

しかし,ビューを切り替えるということは,単純にキャッシュを導入してしまうと,どのデバイスで見ても同じものを表示するだけに留まってしまって,jpmobileを使っている意味がなくなってしまいます.

両方同時に使えないの?

使えます.

ページキャッシュはその仕様上不可能なのですが,アクションキャッシュ,フラグメントキャッシュについては使えます.

この二つのキャッシュ機能はしっかりとfilterを通すことができるので,jpmobileを通した上で,キャッシュしたページを表示できます.

使うオプションは,action_cacheのcache_path.

こんなメソッドを用意して,

hoge#indexをキャッシュしたい時には,

としてやれば,デバイスごとのキャッシュが生成され,それを呼び出してくれます.