私はRailsのでキャッシングのためのドキュメントを読んでいると私はこの出くわした:低レベルキャッシュキー(レール)。内蔵ですか?
は、次の例を考えてみましょう。アプリケーションには、 の競合Webサイトで製品の価格を検索するインスタンスメソッドを持つProductモデル があります。このメソッドによって返されるデータは、低レベルのキャッシングのための 完璧になる:
クラスの製品< ApplicationRecord
def competing_price
> Rails.cache.fetch("#{cache_key}/competing_price", expires_in: 12.hours) do
> Competitor::API.find_price(id)
> end end end
この例では、我々はcache_keyメソッドを使用していることに注意してください、そう キャッシュ-keyは products/233-20140225082222765838000/competing_priceのようなものになります。 cache_key は、モデルのid属性とupdated_at属性に基づいて文字列を生成します。 これは一般的な規約であり、製品が更新されるたびに キャッシュを無効にするという利点があります。一般に、インスタンスレベルの情報に 低レベルキャッシングを使用する場合は、 キャッシュキーを生成する必要があります。
cache_keyメソッドをビルドする必要がありますか、それとも組み込まれていますか?
module ProductsHelper
def cache_key_for_products
count = Product.count
max_updated_at = Product.maximum(:updated_at).try(:utc).try(:to_s, :number)
"products/all-#{count}-#{max_updated_at}"
end
end