Upload
huy-do
View
473
Download
4
Embed Size (px)
Citation preview
CachingとRailsのまとめ@huydx
Share-wis勉強会
Cachingの基礎
• どこでCacheする?
• Browser
• Proxy
• Gateway (Reverse Proxy)
Cachingの基礎
• なんでCacheを決める?
• HTTP Meta-Tag (ほぼ Browserで使われている)+ HTTP Header
Cachingの基礎• HTTP HeaderのCache Controlフィルド + EtagでCacheするかどうかを制御する
• max-age=[seconds]
• s-maxage=[seconds]
• public
• private
• no-cache!
• no-store
• must-revalidate!
• proxy-revalidate
RailsでのCaching• MiddleWare側: AssetPipeline、Rack::Cache、Rack::Etag
• Asset Pipelineは自動的にAssetファイルをCacheヘーダを追加する
• Rack::CacheはMiddleWare側でCacheを実装するRailsプラグイン、基本的には In-Memoryストレージを持って、public属性を持つものを保存
• Rack::Etagはprivate属性を持つものをEtag生成することにより部分てきにCacheできるように
RailsでのCaching• Rails側
• Page Caching : Railsのコードまで行かなくても、Nginx か Apache がページを生成してくれる。直Rails 4からremoveされた。
• Action Caching : before_filterまで行くが、actionのロジックまで行かない。直Rails 4からremoveされた。
• Fragment Caching : 部分的にCacheできる構成、最近は KeyベースCachingを推奨されている
RailsでのCaching• Rails側
• Cacheを手動で制御する関数:
けど手動Cache
Invalidateは非常に不具合発生しやすい
参考• http://37signals.com/svn/posts/3113-how-key-
based-cache-expiration-works
• https://devcenter.heroku.com/articles/http-caching-ruby-rails#expires_in
• http://guides.rubyonrails.org/caching_with_rails.html
• http://tools.ietf.org/html/rfc2616#section-13