使用片段缓存摘要来缓存数据。我面临的问题是,当数据库记录更改时,缓存键应重新生成,但不刷新并显示旧数据。
我以json格式获取数据。
cache "home_index_makes_listing_12_grid",:expires_in => 24.hours do
yield
end
当我更改或添加任何新的html元素时,请摘要摘要并更改缓存。但是从后端更改不会更改任何内容。
如何解决该问题?
答案 0 :(得分:1)
在数据库中更新记录时,缓存键不会自动更改。缓存无法以某种方式知道数据库中的值已更改。
让我们考虑以下示例,以了解如何更新缓存键:
cache "home_index_makes_listing_#{user.id}_#{user.updated_at}_grid", expires_in: 24.hours do
...
end
只要user
对象被更新,密钥就会被更新。运作方式:
请注意,密钥中的动态部分为user.id
和user.updated_at
。因此,仅当更改此特定用户的updated_at
时,密钥才会更新(并且缓存无效)。
当用户(通过浏览器或其他方式)请求此页面时,Rails尝试呈现此代码片段。
config.cache_store
中搜索该键。对于开发环境,通常将其设置为file
(保存在/ tmp中)。对于生产,您应该使用某些缓存服务器,例如Redis或Memcached。希望这会有所帮助。