フラグメントキャッシュをRailsで使う。 - kaeruspoon
Railsでは三つのキャッシュ機能があります。ページキャッシュにアクションキャッシュ、そしてフラグメントキャッシュです。今回はフラグメントキャッシュを使ってみました。
使いかたはとても簡単で、キャッシュしたいビューの部分をcacheブロックに入れるだけ。
via kaeruspoon.net
Railsでは三つのキャッシュ機能があります。ページキャッシュにアクションキャッシュ、そしてフラグメントキャッシュです。今回はフラグメントキャッシュを使ってみました。
使いかたはとても簡単で、キャッシュしたいビューの部分をcacheブロックに入れるだけ。
キャッシュ機構の強化 – Better caching
フラグメントキャッシュなどのキャッシュは今まではファイルに保存するしかなかったけれども、これをメモリやmemcacheやdrbなど他のキャッシュストアにも保存できるようになった。
定義はconfig/environment.rbなどで以下のように
ActionController::Base.cache_store = :memory_store ActionController::Base.cache_store = :file_store, "/path/to/cache/directory" ActionController::Base.cache_store = :drb_store, "druby://localhost:9192" ActionController::Base.cache_store = :mem_cache_store, "localhost"何も指定しないときのデフォルトは:memory_storeになる。
このほかにも自作のキャッシュストアを作成して使うこともできる。
参考
Comments [0]
Action caching 詳細
Pageと同じでキャッシュ対象はアクションの出力全部であるが、Fragment(後述)として保存される点と参照時に ActionPack を経由する点が Page とは異なる。つまり、キャッシュを渡す前に ActionPack へ制御がうつるため、そこで認証や制限を行う事が可能になる。
class BerryzController before_filter :authenticate, :except => :show # filter は全部にかかるので show は除外する caches_page :show caches_action :edit def authenticate unless @request.env["REMOTE_HOST"] == "127.0.0.1" redirect_to "/404.html" end end endキャッシュの削除には expire_action メソッドを利用する。
Comments [0]
Comments [0]