SlideShare a Scribd company logo
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-keybased-cache-expiration-works

•

https://devcenter.heroku.com/articles/httpcaching-ruby-rails#expires_in

•

http://guides.rubyonrails.org/
caching_with_rails.html

•

http://tools.ietf.org/html/rfc2616#section-13

More Related Content

Similar to CacheとRailsの簡単まとめ

Java8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみたJava8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみた
夕人 江熊
 
Asset Pipeline for Perl
Asset Pipeline for PerlAsset Pipeline for Perl
Asset Pipeline for Perl
Yoshihiro Sasaki
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方Toru Makabe
 
キャッシュサーバ運用技術
キャッシュサーバ運用技術キャッシュサーバ運用技術
キャッシュサーバ運用技術
Masaaki Nabeshima
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
gree_tech
 
通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5
Masaaki Nabeshima
 
Data Lake ハンズオン
Data Lake ハンズオンData Lake ハンズオン
Data Lake ハンズオン
Amazon Web Services Japan
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらインターネット株式会社
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
Amazon Web Services Japan
 
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
Ashitaba YOSHIOKA
 
[AWSマイスターシリーズ]AWS Storage Gateway
[AWSマイスターシリーズ]AWS Storage Gateway[AWSマイスターシリーズ]AWS Storage Gateway
[AWSマイスターシリーズ]AWS Storage GatewayAmazon Web Services Japan
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
Yuichi Hasegawa
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
Takuya ASADA
 
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
Amazon Web Services Japan
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Takamasa Maejima
 
HBase on EC2
HBase on EC2HBase on EC2
HBase on EC2
Eiichi Sato
 

Similar to CacheとRailsの簡単まとめ (20)

Java8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみたJava8でhttpサーバを実装してみた
Java8でhttpサーバを実装してみた
 
Asset Pipeline for Perl
Asset Pipeline for PerlAsset Pipeline for Perl
Asset Pipeline for Perl
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
 
Osoljp201210 oi swift
Osoljp201210 oi swiftOsoljp201210 oi swift
Osoljp201210 oi swift
 
キャッシュサーバ運用技術
キャッシュサーバ運用技術キャッシュサーバ運用技術
キャッシュサーバ運用技術
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
 
通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5
 
Data Lake ハンズオン
Data Lake ハンズオンData Lake ハンズオン
Data Lake ハンズオン
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきかElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
ElastiCacheを利用する上でキャッシュをどのように有効に使うべきか
 
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
 
ProjectAtomic-and-geard
ProjectAtomic-and-geardProjectAtomic-and-geard
ProjectAtomic-and-geard
 
[AWSマイスターシリーズ]AWS Storage Gateway
[AWSマイスターシリーズ]AWS Storage Gateway[AWSマイスターシリーズ]AWS Storage Gateway
[AWSマイスターシリーズ]AWS Storage Gateway
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」Seastar in 歌舞伎座.tech#8「C++初心者会」
Seastar in 歌舞伎座.tech#8「C++初心者会」
 
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
 
HBase on EC2
HBase on EC2HBase on EC2
HBase on EC2
 

More from Huy Do

Distributed Tracing, from internal SAAS insights
Distributed Tracing, from internal SAAS insightsDistributed Tracing, from internal SAAS insights
Distributed Tracing, from internal SAAS insights
Huy Do
 
Write on memory TSDB database (gocon tokyo autumn 2018)
Write on memory TSDB database (gocon tokyo autumn 2018)Write on memory TSDB database (gocon tokyo autumn 2018)
Write on memory TSDB database (gocon tokyo autumn 2018)
Huy Do
 
Some note about GC algorithm
Some note about GC algorithmSome note about GC algorithm
Some note about GC algorithm
Huy Do
 
Engineering Efficiency in LINE
Engineering Efficiency in LINEEngineering Efficiency in LINE
Engineering Efficiency in LINE
Huy Do
 
GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)
Huy Do
 
Story Writing Byte Serializer in Golang
Story Writing Byte Serializer in GolangStory Writing Byte Serializer in Golang
Story Writing Byte Serializer in Golang
Huy Do
 
Akka と Typeの話
Akka と Typeの話Akka と Typeの話
Akka と Typeの話
Huy Do
 
[Scalameetup]spark shuffle
[Scalameetup]spark shuffle[Scalameetup]spark shuffle
[Scalameetup]spark shuffle
Huy Do
 
DI in ruby
DI in rubyDI in ruby
DI in ruby
Huy Do
 
Itlc2015
Itlc2015Itlc2015
Itlc2015
Huy Do
 
Consistent Hashingの小ネタ
Consistent Hashingの小ネタConsistent Hashingの小ネタ
Consistent Hashingの小ネタ
Huy Do
 
Thriftを用いた分散型のNyancatを作ってきた
Thriftを用いた分散型のNyancatを作ってきたThriftを用いた分散型のNyancatを作ってきた
Thriftを用いた分散型のNyancatを作ってきた
Huy Do
 
NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]
Huy Do
 
実践Akka
実践Akka実践Akka
実践Akka
Huy Do
 
CA15卒勉強会 メタプログラミングについて
CA15卒勉強会 メタプログラミングについてCA15卒勉強会 メタプログラミングについて
CA15卒勉強会 メタプログラミングについて
Huy Do
 
Making CLI app in ruby
Making CLI app in rubyMaking CLI app in ruby
Making CLI app in ruby
Huy Do
 
[Htmlday]present
[Htmlday]present[Htmlday]present
[Htmlday]presentHuy Do
 

More from Huy Do (17)

Distributed Tracing, from internal SAAS insights
Distributed Tracing, from internal SAAS insightsDistributed Tracing, from internal SAAS insights
Distributed Tracing, from internal SAAS insights
 
Write on memory TSDB database (gocon tokyo autumn 2018)
Write on memory TSDB database (gocon tokyo autumn 2018)Write on memory TSDB database (gocon tokyo autumn 2018)
Write on memory TSDB database (gocon tokyo autumn 2018)
 
Some note about GC algorithm
Some note about GC algorithmSome note about GC algorithm
Some note about GC algorithm
 
Engineering Efficiency in LINE
Engineering Efficiency in LINEEngineering Efficiency in LINE
Engineering Efficiency in LINE
 
GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)
 
Story Writing Byte Serializer in Golang
Story Writing Byte Serializer in GolangStory Writing Byte Serializer in Golang
Story Writing Byte Serializer in Golang
 
Akka と Typeの話
Akka と Typeの話Akka と Typeの話
Akka と Typeの話
 
[Scalameetup]spark shuffle
[Scalameetup]spark shuffle[Scalameetup]spark shuffle
[Scalameetup]spark shuffle
 
DI in ruby
DI in rubyDI in ruby
DI in ruby
 
Itlc2015
Itlc2015Itlc2015
Itlc2015
 
Consistent Hashingの小ネタ
Consistent Hashingの小ネタConsistent Hashingの小ネタ
Consistent Hashingの小ネタ
 
Thriftを用いた分散型のNyancatを作ってきた
Thriftを用いた分散型のNyancatを作ってきたThriftを用いた分散型のNyancatを作ってきた
Thriftを用いた分散型のNyancatを作ってきた
 
NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]
 
実践Akka
実践Akka実践Akka
実践Akka
 
CA15卒勉強会 メタプログラミングについて
CA15卒勉強会 メタプログラミングについてCA15卒勉強会 メタプログラミングについて
CA15卒勉強会 メタプログラミングについて
 
Making CLI app in ruby
Making CLI app in rubyMaking CLI app in ruby
Making CLI app in ruby
 
[Htmlday]present
[Htmlday]present[Htmlday]present
[Htmlday]present
 

CacheとRailsの簡単まとめ