みんな知ってるfresh_when

>100 Views

November 14, 25

スライド概要

profile-image

Professional Ruby and Rails programmer in Tokyo.

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

みんな知ってる fresh_when @Omotesando.rb 03/06

2.

もとつねの日常 @daily_mototsune Ruby on Railsを中心に扱っているフリーランスエンジニア ドメインモデリングからAWSでの運用、スクラム運営やチームビルディ ングなどなど楽しくやらせてもらってます 普段はOmotesando.rbやGinza.rbによくいます 🍷♨✈🏎

3.

みんなfresh_when知ってるよね?

4.

ちなみに私は最近まで 知らなかったです

5.

rubyonrails.orgを眺めていた ある日…

6.

https://rubyonrails.org/

7.

https://rubyonrails.org/

8.

https://rubyonrails.org/

9.

なんかおるーーー!?

10.

存在を知らなかったメソッドが 一等地一番地に普通にいた

11.

い、いつから…? - 今のwebsiteのbranchをみた感じ、一番最初のコミットでどこかからimportさ れていた - それが2021年12月頃の話 =>

12.

メソッド自体はいつから…?

13.

https://apidock.com/rails/v2.2.1/ActionController/Base/fresh_when

14.

Railsエンジニアとか名乗って すみませんでした

15.

10年以上Railsで仕事してて知らな いことあるのも味わい深くて いいですね

16.

今更かもしれないけど 調べてみた

17.

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を返すよ

20.

つまりfresh_whenを使うと… - EtagやLast Modifiedなどのキャッシュに関係するheaderを意図した通り に設定できる ユーザーから送られてきたIf-Modified-SinceやIf-Modified-Sinceを見て、 同じであればviewのレンダーリングをスキップしてユーザに304を返せる - SQLの発行やviewのrenderをスキップできるのであればコスト削減 に大いに役に立つ

21.

実例

22.

新しくHotwireを使って作成されたRails appはデフォルトでTURBOの Prefetching Linksが有効になっている

23.

ユーザがindexページでマウスをウ ロウロさせるだけで大量のリクエス トが飛ぶ事態に フラグメントキャッシュを使っている けどそれでもなかなか辛い状況

24.

これがfresh_whenを使うと

25.

fresh_when使用前 fresh_when使用後

26.

めっちゃ便利だけど… - フラグメントキャッシュ等と同じでキャッシュは気を使わないといけない - - 必要なタイミングでキャッシュをクリアできない - キャッシュされていはいけない内容をキャッシュに含んでしまっている 正しく理解してうまく活用していきたいですね

27.

宣伝 RubyKaigi 2025 Day4に 道後温泉本館の飛翔の間にいきます 興味ある方は @daily_mototsune まで