>100 Views
November 14, 25
スライド概要
Professional Ruby and Rails programmer in Tokyo.
みんな知ってる fresh_when @Omotesando.rb 03/06
もとつねの日常 @daily_mototsune Ruby on Railsを中心に扱っているフリーランスエンジニア ドメインモデリングからAWSでの運用、スクラム運営やチームビルディ ングなどなど楽しくやらせてもらってます 普段はOmotesando.rbやGinza.rbによくいます 🍷♨✈🏎
みんなfresh_when知ってるよね?
ちなみに私は最近まで 知らなかったです
rubyonrails.orgを眺めていた ある日…
https://rubyonrails.org/
https://rubyonrails.org/
https://rubyonrails.org/
なんかおるーーー!?
存在を知らなかったメソッドが 一等地一番地に普通にいた
い、いつから…? - 今のwebsiteのbranchをみた感じ、一番最初のコミットでどこかからimportさ れていた - それが2021年12月頃の話 =>
メソッド自体はいつから…?
https://apidock.com/rails/v2.2.1/ActionController/Base/fresh_when
Railsエンジニアとか名乗って すみませんでした
10年以上Railsで仕事してて知らな いことあるのも味わい深くて いいですね
今更かもしれないけど 調べてみた
fresh_whenとは - ActionController::ConditionalGet moduleに定義されているメソッド https://api.rubyonrails.org/によると Sets the etag, last_modified, or both on the response, and renders a 304 Not Modified response if the request is already fresh. 訳) etag,last_modifiedまたはその両方をレスポンスにセットして、リクエスト された環境のキャッシュが古くなっていない場合は304を返すよ
つまりfresh_whenを使うと… - EtagやLast Modifiedなどのキャッシュに関係するheaderを意図した通り に設定できる ユーザーから送られてきたIf-Modified-SinceやIf-Modified-Sinceを見て、 同じであればviewのレンダーリングをスキップしてユーザに304を返せる - SQLの発行やviewのrenderをスキップできるのであればコスト削減 に大いに役に立つ
実例
新しくHotwireを使って作成されたRails appはデフォルトでTURBOの Prefetching Linksが有効になっている
ユーザがindexページでマウスをウ ロウロさせるだけで大量のリクエス トが飛ぶ事態に フラグメントキャッシュを使っている けどそれでもなかなか辛い状況
これがfresh_whenを使うと
fresh_when使用前 fresh_when使用後
めっちゃ便利だけど… - フラグメントキャッシュ等と同じでキャッシュは気を使わないといけない - - 必要なタイミングでキャッシュをクリアできない - キャッシュされていはいけない内容をキャッシュに含んでしまっている 正しく理解してうまく活用していきたいですね
宣伝 RubyKaigi 2025 Day4に 道後温泉本館の飛翔の間にいきます 興味ある方は @daily_mototsune まで