我想使用rake任务预生成一些页面。我想生成所有用户的页面(每页800.000和90个用户,因此少于9000页)。将页面保存在磁盘上。
现在我在rake任务中向控制器操作发出了很多请求,并使用Mechanize获取结果并将页面保存在磁盘上。
问题是我不想向我的服务器发出这么多请求(因为它超时)速度无关紧要因为我有一个额外的服务器。我想生成页面而不需要做很多请求,所以我必须自己构建html字符串。
在视图中我使用了will_paginate帮助程序进行分页。我真的不知道如何在rake任务中构建分页。 will_paginate正在使用像响应变量这样的东西。
有人可以帮助我在不使用请求的情况下进行分页吗?或者也许是另一个宝石来进行分页......它不一定非常漂亮
我正在使用Rails 2.1
由于
答案 0 :(得分:2)
我通过另一个想要预加载缓存的SO问题找到了这个。 https://github.com/tommyh/preheat
Preheat.it do
app.get("/")
end
因此,在您的情况下,您可以使用cron作业来预热缓存。
之类的东西total_user_pages = 9000 #calculate it
Preheat.it do
1.upto(total_user_pages) do |i|
app.get("/users?page=#{i}")
end
end
我检查过并且在2.1中引入了Rails.cache,所以你在那里很好。与机械化不同,此宝石不会调用您的网络服务器
“ActiveSupport的获取方法正在进行中 仅在ruby过程中修改 这是使用预热,所以有些东西 像mechanize / wget / curl会调用 通过你的前端页面 网络服务器,不受影响 Preheat.it,而app.get会 直接打电话给你的控制器 同样的红宝石过程。“
然后,您需要在应用中使用Rails.cache来利用它。