Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RailsのCacheつかってますか?@表参道.rb #44
Search
YABOO JAPAN
March 07, 2019
0
780
RailsのCacheつかってますか?@表参道.rb #44
YABOO JAPAN
March 07, 2019
Tweet
Share
More Decks by YABOO JAPAN
See All by YABOO JAPAN
RubyKaigiでもらった熱量がOSSに変換された話@AFTER RubyKaigi 2019
yaboojp
0
2.7k
RailsでViewModel導入に 挫折しかけてる話@表参道.rb #44
yaboojp
1
970
サービス開発する平成の君に 昭和の僕から伝えたい7つのこと@平成.rb #2
yaboojp
0
810
夏休みの宿題 8/31にやらない話 @Otemachi.rb #14
yaboojp
0
340
ぼくが考える最強のApplicationModel @表参道.rb #43
yaboojp
0
730
大掃除 on Rails @Otemachi.rb #12
yaboojp
1
73
使わない機能の倒し方 @s-dev talks 〜サービス開発勉強会〜 大忘年LT大会
yaboojp
0
110
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
71
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
140
The Pragmatic Product Professional
lauravandoore
37
7.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
260
Prompt Engineering for Job Search
mfonobong
0
180
Thoughts on Productivity
jonyablonski
75
5.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
83
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
190
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Transcript
RailsͷCache͔ͭͬͯ·͔͢ʁ @yaboojp on දࢀಓ.rb #44 2019/3/7
Self • Name: େ༅ Ӭ / @yaboojp • Jobs: •
22Inc. Co-Founder & CTO • ex NTTdata • Location: ژ -> ౦ژ • Favorites: ΫϥϑτϏʔϧ, Իָ, όΠΫ, JALϚΠ ϧ
None
Cacheͱ͍ͬͯ৭ʑ $MJFOU /HJOY 6OJDPSO 3%#.4 )UUQ)FBEFS &YQJSFT &5BH $BDIF$POUSPM
-BTU .PEJpFEͳͲ 1BHF$BDIF 'SBHNFOU$BDIF "DUJPO$BDIF .JEEMFXBSF 7BSOJTI 4RVJEͳͲ $%/ $MPVE'MPOUͳͲ 42-$BDIF ϨϕϧΩϟογϡ %/4 -#
on Railsͳͱ͚ͩ͜
PageCacheͱ • Rails3·Ͱඪ४උ͕ͩͬͨɺࠓGem • ॳճΞΫηε࣌Ҏ֎Rubyʹࣄͤ͞ͳ͍
PageCache ࣮ݧ • ྫ͑͜ΜͳϖʔδʹΔͱͲ͏͔ʁ
PageCache ݁Ռ • ݁Ռɿ 173ms => 170ms • 1.7%ߴԽ... ͱ͍͏͔ɺ΄΅มΘΒͳ͍
• ಈతίϯςϯπ͕গͳ͍ViewͰΔҙຯ͋·Γͳ ͍ • ͨͩɺunicornͳͲͷAppαʔόͷෛՙܰݮɺো࣌ ͰฦͤΔͱ͍ͬͨϝϦοτ͋Δ
͡Ό͋ɺ ಈతίϯςϯπ͕ଟ͍ϖʔδ ͰPageCacheͬͯΈΑ͏
PageCache ҙ • Railsͷaction͕Ұ࣮ߦ͞Εͳ͍ͨΊɺ֤छ ϩδοΫͪΖΜɺೝূ͢Β͢Γൈ͚Δ Ϣʔβຖͷ ίϯςϯπΤϦΞ ͕͜͜ॳճʹΞΫηεͨ͠Ϣʔβͷใͱͯ͠Ϩϯμ Ϧϯά͞Εͨ)5.-Λৗʹฦ͢ ˞෦తʹ"KBYߋ৽͢Δઃܭ͋Γ
͍ॴ͕ͳ͔ͬͨ
PageCache ΦϚέ • ͠ΐ͏͕ͳ͍ͷͰɺ͜͏͍͏࣮ݧ • ݁Ռɿ 1100ms => 100ms ͙Β͍
PageCache ·ͱΊ • Railsʹ౸ୡ͠ͳ͍ͷڧ͍ • ίϯςϯπͷग़͚͠ͳͲʹ͑ͳ͍ͳͲ ͍ॴ͕ݶఆ͞ΕΔ • ಋೖίετΊͬͪΌ͍
ݟ!!...??
࣍ʂʂ
FragmentCacheͱ • ҰϨϯμϦϯάͨ͠ViewϑΝΠϧΛϑϥά ϝϯτͱ͍͏୯ҐͰCacheStoreʹอଘ Ωϟογϡ͍ͨ͠ ΤϦΞ 'SBHNFOU
FragmentCache ઃఆ • อଘઌࣗ༝ʹઃఆ
FragmentCache ͍ํ • key id + updated_at ͱ͔ҰҙʹͳΔΑ͏ʹ
ϩγΞϯυʔϧΩϟογϡ
FragmentCache σόοά • ։ൃڥઃఆೖΕͱ͘ͱ • ͜ΜͳΩϟογϡͷར༻ঢ়گ͕֬ೝͰ͖Δ
FragmentCache #1 • ͋Γ;Εͨใϖʔδ • 800ms -> 720ms 10%ߴԽ
FragmentCache #2 • ΊͬͪΌॏ͍ϖʔδ • 9925ms -> 805ms 1240%ߴԽ ͳΜ͔ΞϗΈ͍ͨ
ʹॏ͍ϖʔδ ʢ/ ؚΉʣ
దʹExpireͤ͞Δ keyʹҙ • id + updated_at ͱ͔͕ϕετϓϥΫςΟε • ϛεͬͨΒେࣄނʹͳΔ͜ͱ
ΩϟογϡͰૣͯ͘͠Α Ωϟογϡͳ͍ͱ͍ ͬͱΩϟογϡΛ ͍ʂʂ ੑೳ Ωϟογϡ ผͷՕॴ͕͘ͳΔͱ Ωϟογϡ
༻๏ɾ༻ྔΛकͬͯ ਖ਼͓͍͍ͩ͘͘͠͞
None
We Are Hiring
Thanks