轨道如何缓存部分?



我为表中的每一行使用render partial: 'fragment', locals:{obj:item}。 处理整个页面需要很长时间。

有没有办法在第一次加载时保存每个项目的所有片段,并且在服务器工作期间每次都不再次渲染它们?

更新

card/index.html.haml
%table 
=render partial: 'card/card', collection: @cards, cached: true
card/_card.html.haml
-cache card do
%tr=card.title
card_controller.rb
def index
@cards = Card.order(:name)
end

解决

缓存在我添加到 development.rb 后开始工作:

config.action_controller.perform_caching = true
config.cache_store = :memory_store, { size: 64.megabytes }

或者您可以运行rails dev:cache来切换缓存。

在默认配置中,轨道在开发中没有启用/配置缓存。 从 rails 5 开始,您可以touch tmp/caching-dev.txtrm tmp/caching-dev.txt并重新启动服务器以切换它(对于早期版本,您可以将其向后移植到您的应用程序,请参阅 5.2.1 的 config/development.rb(。

请注意,您还必须配置生产环境并拥有缓存后端 - 在每个工作线程中具有单独的缓存可能会浪费。因此,redis/memcached 应该很方便。

然后作为经验法则 - 最好在开发中使用相同的缓存存储和类似的配置,因为缓存存储具有非零延迟,有时不缓存某些内容可能会更快,并且您希望开发环境更接近生产环境。

最新更新