8
CachingRailsのまとめ @huydx Share-wis勉強会

CacheとRailsの簡単まとめ

  • Upload
    huy-do

  • View
    473

  • Download
    4

Embed Size (px)

Citation preview

Page 1: CacheとRailsの簡単まとめ

CachingとRailsのまとめ@huydx

Share-wis勉強会

Page 2: CacheとRailsの簡単まとめ

Cachingの基礎

• どこでCacheする?

• Browser

• Proxy

• Gateway (Reverse Proxy)

Page 3: CacheとRailsの簡単まとめ

Cachingの基礎

• なんでCacheを決める?

• HTTP Meta-Tag (ほぼ Browserで使われている)+ HTTP Header

Page 4: CacheとRailsの簡単まとめ

Cachingの基礎• HTTP HeaderのCache Controlフィルド + EtagでCacheするかどうかを制御する

• max-age=[seconds]

• s-maxage=[seconds]

• public

• private

• no-cache!

• no-store

• must-revalidate!

• proxy-revalidate

Page 5: CacheとRailsの簡単まとめ

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できるように

Page 6: CacheとRailsの簡単まとめ

RailsでのCaching• Rails側

• Page Caching : Railsのコードまで行かなくても、Nginx か Apache がページを生成してくれる。直Rails 4からremoveされた。

• Action Caching : before_filterまで行くが、actionのロジックまで行かない。直Rails 4からremoveされた。

• Fragment Caching : 部分的にCacheできる構成、最近は KeyベースCachingを推奨されている

Page 7: CacheとRailsの簡単まとめ

RailsでのCaching• Rails側

• Cacheを手動で制御する関数:

けど手動Cache

Invalidateは非常に不具合発生しやすい

Page 8: CacheとRailsの簡単まとめ

参考• 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