0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

同一ページ内で同じインスタンスを複数箇所でキャッシュのキーとしたい

Last updated at Posted at 2022-12-23

ぶつかった問題

以下のような時、ビューの一部を避けて同じインスタンスをキーとしてフラグメントキャッシュを使いたいけれど、キーが重複されてしまうのでどうしたらいいのか。。と少し迷った。

インスタンスをキーとしたいのは、そのインスタンスのデータが更新されたらキャッシュも更新されるようにしたいため。

<div>
    <% cache @service do %>
        # キャッシュしたい
        # @serviceが更新されたらキャッシュを更新するようにしたい
    <% end %>
    
    <div>
        # ここはキャッシュしたくない
    </div>
    
    <% cache @service do %>
        # キャッシュしたい
        # @serviceが更新されたらキャッシュを更新するようにしたい
    <% end %>
</div>

対処方法

以下のように配列の形でキーを設定できる。
左右を/で区切って一つの文字列としてくれる。
説明のため雑に1と2としているが、もっとわかりやすくするべきだと思う。

<% cache [@service, "1"] do %>
ほにゃ
<% end %>

<% cache [@service, "2"] do %>
ほにゃ
<% end %>

インスタンス変数を複数使う

以下のようにインスタンス変数複数使ってもいける

<% cache [@service, @staff] do %>
  ほにゃらら
<% end %>

<% cache [@service, @shop] do %>
  ほにゃらら
<% end %>

最初に試して失敗した例

キーが毎回変わるのでうまくいかない。

<% cache "#{@service}_1" do %>
  ほにゃらら
<% end %>

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?