手动填充Rails中的缓存



在Rails3.x中,我想手动预编译缓存,并在模型实例和静态HTML的视图中使用片段缓存。

Rails在请求页面时会延迟填充缓存,这会导致第一次加载时加载时间变慢。

因此,给定这个示例代码:

  <% cache("index_chart") do %>
    <%= high_chart("chart", @h) %>  
  <% end %>

如何使用Ruby手动填充缓存?

可能最简单的方法是编写一个shell脚本,向覆盖缓存的各种URL发出GET请求,也称为缓存预热。

一个简单的设置是在应用程序中创建一个名为scripts/cache_warmer的shell脚本,然后您可以从服务器命令行、部署脚本或像resque这样的后台处理器手动触发它。

# Sample scripts/cache_warmer
GET http://localhost/
GET http://localhost/some_other_page

如果你想让它更智能一点,那就另选它。比如能够为资源命中成员url就是使用rake任务。

# lib/tasks/cache_warmer.rake
task :cache_warmer => :environment do
  Resource.all.each do |resource|
    Net::HTTP.get_response("http://localhost/resources/#{resource.id}")
  end
end

这当然只是一个基本的例子。你的实际代码会根据你试图点击的路线和数量而有所不同。您可能希望查看多线程的选项以获得更高的并发性,或者使用备用"工作"服务器来执行来自的请求。天空是复杂程度的极限,这取决于你的设置。

最新更新