現在運用中のサービスのパフォーマンスを改善したいと思い、
アクションキャッシュを導入しようとしています。
そのままキャッシュしてしまうと、PCで携帯用のビューが表示されたり
逆に携帯でPCのビューが表示されたりしたので、cache_pathを指定して
PC、各キャリア毎に
コントローラー名/アクション名_端末名(pc,docomoなど)というパスでキャッシュしています。
一応コードはこんな感じです。
■アクションキャッシュするコントローラー
class HogeController < ApplicationController
caches_action :index, :cache_path => Proc.new { |app|
caches_action_by_request(app)}
・・・
end
■jpmobile/filter.rbに追加
class ActionController::Base
def self.caches_action_by_request(app)
#コントローラー名/アクション名_端末名でアクションキャッシュ
cache_path="#{app.params[:controller]}/#{app.params[:action]}_"
if app.request.mobile?
case app.request.mobile
when Jpmobile::Mobile::Docomo
"#{cache_path}docomo"
when Jpmobile::Mobile::Au
"#{cache_path}au"
when Jpmobile::Mobile::Jphone
"#{cache_path}softbank"
when Jpmobile::Mobile::Softbank
"#{cache_path}softbank"
end
else
"#{cache_path}pc"
end
end
end
これでとりあえずPCと各キャリア別にビューの振り分けができるようには
なったんですが、冗長な気がします。
実はもっといい方法があるとか、あるいはコードをこうした方がよいとかがあれば、
教えていただけませんか。
よろしくお願いします。
━━━━━━━━━━━━━━━━━━━━━━━━━
Satoshi Tahara
http://digital-squad.net/
http://blog.digital-squad.net/
http://twitter.com/DIGITALSQUAD
━━━━━━━━━━━━━━━━━━━━━━━━━
--
このメールは Google グループのグループ「jpmobile」の登録者に送られています。
このグループに投稿するには、
jpmo...@googlegroups.com にメールを送信してください。
このグループから退会するには、
jpmobile+u...@googlegroups.com にメールを送信してください。
詳細については、
http://groups.google.com/group/jpmobile?hl=ja からこのグループにアクセスしてください。