如果在控制器中使用:
def index
@time_start_in_controller
...
end
并在视图结束时使用
<%= "took #(Time.now - @time_start_in_controller} seconds" %>
但不是视图的时间不是渲染的真正结束,因为它需要与布局混合等等。什么是更准确的方式(尽可能准确)在网页上打印页面生成时间 ?
(更新:),控制台显示日志占用时间为61毫秒,但页面加载时间肯定需要2到3秒,而我使用的网络速度非常快,无论是在家还是在工作,在18mbps或更高,平均可能30ms)
更新:如果我使用http性能测试ab
ab -n 10 http://www.my-web-site.com:8080
10个请求共需要3秒。但如果我使用Firefox或Chrome加载页面,每个页面加载大约需要3秒。这是我的工作计算机连接到运行Rails 3的笔记本电脑,但不应该有所作为,因为我在本地运行Bash以获取上述语句并在本地使用Firefox。
答案 0 :(得分:1)
在典型的生产环境中,静态内容(图像,css,js)由Web服务器(例如apache,nginx等)处理,而不是你的rails服务器。所以你也应该检查他们的日志。如果您正在从rails服务器提供可能是您的问题的静态内容。
如果您的浏览器时间很慢但是在rails(根据日志)中花费的时间很快,这可能意味着许多事情,包括但不限于:
调试这些类型的性能问题的一种方法是在rails服务器(例如Haproxy)前放置一些内容并将日志记录设置为full。因为它们将显示有多少等待请求以及实际请求/响应传输所花费的时间以及您的rails线程处理所需的时间。