在 Rails 3.x 中,我想手动预编译我的缓存,并在模型实例和静态 HTML 的视图中使用片段缓存。
当页面被请求时,Rails 会延迟填充缓存,这会导致第一次加载时加载时间变慢。
所以给出这个示例代码:
<% cache("index_chart") do %>
<%= high_chart("chart", @h) %>
<% end %>
如何使用 Ruby 手动填充缓存?
在 Rails 3.x 中,我想手动预编译我的缓存,并在模型实例和静态 HTML 的视图中使用片段缓存。
当页面被请求时,Rails 会延迟填充缓存,这会导致第一次加载时加载时间变慢。
所以给出这个示例代码:
<% cache("index_chart") do %>
<%= high_chart("chart", @h) %>
<% end %>
如何使用 Ruby 手动填充缓存?
可能最简单的方法是编写一个 shell 脚本,向各种 URL 发出 GET 请求,这些 URL 将覆盖您的缓存,也称为缓存预热。
一个简单的设置是在您的应用程序中创建一个名为 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
这当然只是一个基本的例子。您的实际代码会根据您尝试访问的路线以及有多少路线而有所不同。您可能希望查看多线程选项以获得更高的并发性,或者使用备用“工作”服务器来执行请求。就复杂程度而言,天空是极限,这取决于您的设置。