Q
视图缓存
6
A
回答
0
我觉得下面的链接应该给你一个好的开始。 How do I get the rendered output of a controller's action without visiting the web page?
我尝试完成相同的操作,而且据我所知,您的假请求应该有正确的主机,因为缓存键包含主机信息。
我用的ActionController ::整合完成缓存::会议
ais = ActionController::Integration::Session.new
ais.host = host
ais.xml_http_request(:post, url, params, headers)
心中已经得到了另一个问题:
这也将返回响应对象。
2
我们有必要做从rake任务类似的东西 - 我们有一个局部的,将需要显示一个很长的实体名单(700〜),这是有些方面的具体和,由于一系列的数据库结构问题和自定义排序标准,在进入缓存之前很容易花费大于25秒的时间进行第一次渲染>这通常会超时,因为我们的HTTP服务器设置为在30秒后终止HTTP请求而没有响应,并且预缓存这个自定义列表是个解决方案。
您需要做的是创建一个ActiveController :: Base实例,或者如果您需要帮助器方法或其他实体的控制器之一,然后将其lookup_context引用传递给一个新的ActionView.Renderer实例。
在我们的rake任务,我们做了以下
namespace :rake_for_time_consuming_nonsense do
task :pre_cache_long_list do
PreCacher.pre_fetch_partials
end
end
class PreCacher
def self.pre_fetch_partials
the_controller = ActionController::Base.new
# Set any instance variables required by your partial in the controller,
# they will be passed to the partial with the view_context reference
the_controller.instance_variable_set "@cache_key", cache_key
the_controller.instance_variable_set "@the_object", MyModel.first
view_renderer = ActionView::Renderer.new the_controller.lookup_context
view_renderer.render the_controller.view_context, {partial: 'my_model/the_partial', layout: false}
end
end
这个工作在Rails的3.2.13。
+0
这很好,但我不能使用自定义助手。我怎么能包括他们? – Railsana
相关问题
- 1. 缓存视图
- 2. Laravel缓存视图
- 3. Drupal:视图缓存和memcached
- 4. 临时视图缓存?
- 5. jquery树视图缓存
- 6. 缓存视图状态?
- 7. 预缓存django REST视图
- 8. 缓存smarty视图呈现
- 9. CakePHP没有缓存视图
- 10. Django低级缓存视图
- 11. 缓存在网页视图
- 12. 从列表视图json缓存图像?
- 13. 使用地图缓存模式视图
- 14. 缓存视图的缓存键控制命名
- 15. 组件正在缓存在Angular2中 - 阻止视图缓存
- 16. CakePHP 3.0中的缓存视图
- 17. Django的部分缓存的视图
- 18. 在AppFabric中手动缓存MVC视图
- 19. 片段在拉链视图中缓存?
- 20. cakephp视图缓存不起作用
- 21. MVC3视图上的.htm缓存问题。
- 22. 从ListAdapter获取缓存的视图
- 23. 在Angular JS 1.4中缓存视图
- 24. 在Django中缓存半动态视图
- 25. 缓存时,请关闭视图状态?
- 26. Cronjob定期刷新Django视图缓存
- 27. 如何在cakephp 3中缓存视图
- 28. Laravel中的缓存视图输出4
- 29. 如何禁用Laravel视图缓存?
- 30. 如何在Android中缓存视图?
谢谢@metaphalon ..会试试这个报告。 – bgajdero
这没有奏效,或者至少我不能让它产生视图。 ais.response确实返回了生成的代码,但是返回了部分,而不是缓存。任何方式来从控制台呈现HAML响应? – bgajdero
这只产生了缓存,我不知道你使用了什么缓存后端。 您将不得不使用FileStore Backend,因为MemoryStore将存储在内存中,并且当您关闭rake(或控制台)时,所有缓存的部分都将丢失。 – metaphalon