Cache on Rails
Proposal本文
Abstract
We can use many cache mechanisms on Rails. You will know the cache mechanisms and be able to apply them to your application by this talk.
私達は様々なキャッシュをRailsで使っています。このトークを聞くと、そのようなキャッシュをあなたのRailsアプリケーションで使えるようになるでしょう。
I'll talk in Japanese, but the slides are written in English.
Details
このトークではRailsアプリケーションで使える様々なキャッシュについて話します。
ゴール
このトークのゴールは次のとおりです。すなわち、Railsアプリケーションの開発時に適切なキャッシュを選択し、アプリケーションを高速化できるようになることを目指します。
話すこと
このトークでは、以下のキャッシュについて話す予定です。主にアプリケーション開発者が直接意識して操作するような、アプリケーション寄りのキャッシュの話をしたいと考えています。
-
Rails.cache
- memcached, file, redis, memory, etc...
- localcache
- HTTP Cache-Control header
- etag
- Rack::ETag
- Active Record Query Cache
- BrowserのCacheStorage API
またキャッシュの関連技術として、次のことも話します。
- cache_keyの計算方法
- そもそもキャッシュを使う必要があるのか?
- キャッシュの使いどころ、使うべきではないケースなど
- キャッシュを使うことの難しさについて
話さないこと
一方、以下のキャッシュについては話さない予定です。なぜならば、これらのキャッシュはアプリケーション開発者が意識することは少なく、また私自身の知見もあまり多くないためです。
- CPU cache
- Ruby interpreterのキャッシュ
- OSのdisk cache
以下のキャッシュについても同様に話さない予定です。これらはアプリケーション開発者が意識することはあると思いますが、私自身の知見が多くないためです。
- CDN
- Varnishなどのミドルウェア
Pitch
2021年前半、私はRailsアプリケーションの高速化を主なタスクとして仕事をしていました。その中でキャッシュを使った(あるいはキャッシュを使わない)多くの改善を実装しました。
この改善は簡単ではなく、様々な方法を調査して実装する必要がありました。そのためこの改善で得た知見は多く、社内だけでなく社外にも広く共有したいと考えています。
なにこれ
Kaigi on Rails 2021に出すProposalの下書き
リンク集
- Rails Guide https://railsguides.jp/caching_with_rails.html
- Railsのlocal cacheが遅くなっているらしい件 https://zenn.dev/pocke/scraps/891ce83c9a3d4f
- ブラウザのキャッシュAPIについて https://zenn.dev/pocke/scraps/2d0ade8e1b083a
- RailsのベンチマークでCacheをうまく使う方法 https://zenn.dev/pocke/scraps/b6dc04617d9485
cache_keyがどう計算されるかについても話す。
キャッシュは麻薬