我一直在试用Rails应用程序上的俄罗斯玩偶片段缓存,更具体地说是在其主要的仪表板页面上。这是用户登录后看到的第一页,是俄罗斯娃娃的好选择,因为它包含许多嵌套元素。
当用户自己进行需要应用重新渲染仪表板的更改时,缓存效果很好。缓存加载时间比渲染整页快4倍。
但是,系统会更改数据。例如,每天晚上,我们会按前一天的新汇率更新所有值。这将自动使Dashboard中的大多数片段失效,第二天早上用户登录时会遇到冷缓存。
可以在系统更新后重新生成这些片段缓存,以使它们保持温暖?我想我可以在任何系统更新后手动write
片段,但我也必须手动管理密钥和依赖项。 (我目前正在使用cache_digest
gem,非常方便。)。
有什么想法吗?
答案 0 :(得分:1)
如果它是您的选项,那么您可以在数据属性中包含计算所需的所有数据,然后使用Javascript将其转换为文本。
所以你的原始输出可能是:
<li data-gbp-amount="2.50"></li>
然后你跟JS一起做了类似的事情:
$(document).find("[data-gbp-amount]").each(index, el) ->
$(el).text($(el).data("gbp-amount") * todaysExchangeRate)
这样,Rails输出的所有内容都将被缓存,并且不会随汇率变化。
答案 1 :(得分:0)
一切都取决于cache_key。 cache_key基于model id,updated_at属性和html模板中的md5。因此,如果您更改这3个密钥中的一个,那么您将缓存过期。
我不知道您的数据有多复杂,但您可以在主AR :: model中使用touch方法来更改缓存键。也许你有一个主要的AR ::模型,其他记录是家属。