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. Django低级缓存视图
- 3. Drupal:视图缓存和memcached
- 4. 预缓存django REST视图
- 5. 缓存smarty视图呈现
- 6. jquery树视图缓存
- 7. 临时视图缓存?
- 8. 缓存视图状态?
- 9. 缓存在网页视图
- 10. 从列表视图json缓存图像?
- 11. 使用地图缓存模式视图
- 12. 为列表视图缓存图片
- 13. 组件正在缓存在Angular2中 - 阻止视图缓存
- 14. 缓存视图的缓存键控制命名
- 15. 可能的视图缓存问题?
- 16. 缓存的视图失去其事件
- 17. UITableViewCell与UILabel子视图缓存问题
- 18. CakePHP的:撇号URL和视图缓存
- 19. 在Django中缓存半动态视图
- 20. cakephp视图缓存不起作用
- 21. 托管bean和缓存视图查找
- 22. 缓存视频和图像数据 - Couchbase
- 23. Django的部分缓存的视图
- 24. 如何禁用Laravel视图缓存?
- 25. 如何在Android中缓存视图?
- 26. 如何缓存片段视图
- 27. CakePHP的2.0视图缓存不工作
- 28. 验证缓存的视图 - CakePHP
- 29. 不缓存视图在Django LocMemCache
- 30. 如何在cakephp 3中缓存视图
谢谢@metaphalon ..会试试这个报告。 – bgajdero
这没有奏效,或者至少我不能让它产生视图。 ais.response确实返回了生成的代码,但是返回了部分,而不是缓存。任何方式来从控制台呈现HAML响应? – bgajdero
这只产生了缓存,我不知道你使用了什么缓存后端。 您将不得不使用FileStore Backend,因为MemoryStore将存储在内存中,并且当您关闭rake(或控制台)时,所有缓存的部分都将丢失。 – metaphalon