我正在为表中的每一行使用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 }
答案 0 :(得分:1)
在默认配置中,rails在开发中未启用/配置缓存。
从rails 5开始,您可以touch tmp/caching-dev.txt
或rm tmp/caching-dev.txt
并重新启动服务器以对其进行切换(对于较早的版本,您可以将其反向移植到您的应用程序中,请参见config/development.rb of 5.2.1)。
请注意,您还必须配置生产环境并具有缓存后端-在每个工作线程中拥有单独的缓存可能很浪费。因此,redis / memcached应该很方便。
那么,根据经验,最好在开发中使用相同的缓存存储区和类似的配置,因为缓存存储区具有非零延迟,有时不缓存某些内容会更快,并且您希望开发环境成为更接近生产。
答案 1 :(得分:1)
或者您可以运行rails dev:cache
来切换缓存。