在Rails 3.x中我想手动预编译我的缓存,并在模型实例和静态HTML的视图中使用片段缓存。
当请求页面时,Rails会懒惰地填充缓存,这会导致首次加载时加载时间变慢。
所以给出了这个示例代码:
<% cache("index_chart") do %>
<%= high_chart("chart", @h) %>
<% end %>
如何使用Ruby手动填充缓存?
答案 0 :(得分:2)
最简单的方法可能是编写一个shell脚本,该脚本向覆盖缓存的各种URL发出GET请求,也称为缓存预热。
一个简单的设置是在您的应用程序中创建一个名为scripts / cache_warmer的shell脚本,然后您可以从服务器命令行,部署脚本或resque等后台处理器手动触发它。
# Sample scripts/cache_warmer
GET http://localhost/
GET http://localhost/some_other_page
另一种选择,如果你想要它更聪明一点。例如能够点击资源的成员网址就是使用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
这当然只是一个基本的例子。您的实际代码会根据您尝试的路线和有多少路线而有所不同。您可能希望查看多线程的选项以获得更高的并发性,或者使用备用“工作”服务器来执行请求。天空是最重要的,这取决于你的设置。