2016-05-05 150 views
3

我有一个rails项目。 我在一个控制器中有很奇怪的事情:浏览器需要大约3分钟后负荷页,但Rails的日志中写道:Rails:页面加载时间很长

Completed 200 OK in 20563ms (Views: 17144.2ms | ActiveRecord: 324.4ms) 

我知道21秒这是很长的时间,但它不是3分钟。 Data from a browser

我知道这个数据不够,但我不期望完整的答案只有一个指针哪里是麻烦。 这个页面的大小约5 Mb。

+0

您是否在使用CDN为您的网页上的资产提供服务?你是否也在本地看到这种行为?大部分图片是来自其他网站还是存储在您的资产管道中? –

+0

在Chrome开发人员控制台中发布“网络”选项卡的屏幕截图,以便我们可以清楚地看到哪个请求需要多长时间。 –

+0

还要确保你没有做'n + 1'风格的查询。当您在模板视图中调用关联时,这是一个简单的错误。 – Jeff

回答

0

正如您所看到的,大部分时间都花在“闲置”阶段。这包括加载页面上所有资源(图像,样式表,JavaScript等)的时间。因此,您的HTML页面将在10秒内加载并呈现,但剩下的时间用于下载页面中的所有资源。

这可能是某个服务器上托管的单个资源,它对响应您的请求的响应速度很慢。因此,即使你已经加载了所有的内容,但你有一个谷歌托管的jquery文件在那里,并且互联网连接性很差,那么你会看到“空闲”占用大量时间。

但是,就你而言,它看起来像5MB页面上的一些图像。

+1

感谢您的回答,但5Mb它只是来自Rails服务器(非常大的表格)的数据。我注意到:在rails在日志中写入完整消息之后,在浏览器接收日期之前,ruby进程占用处理器的50%。我想可能是中间件方面的一个问题。 – kunashir

+0

也许你有一个双核处理器,而Ruby正在占用你100%的CPU时间。这可能是一些处理响应的中间件,但是您可以在生成时通过[流式传输页面](http://api.rubyonrails.org/classes/ActionController/Streaming.html)优化页面渲染,而不是等到它全部呈现,然后才发送给客户端。 – Uzbekjon

0

延迟可能是由config/environments/development.rb中的config.assets.debug = true造成的。将其设置为false可能会解决您的问题。

通过这样做,源文件组合在一起和源地图将不会 工作(例如,如果使用的Sass /咖啡,你不会看到它在devtools)

0

我发现了一个问题后,漫长的搜索。 对于主对象加载许多相关对象的数据库来说,这是不必要的查询。但我不明白为什么它需要这么多时间(也许GC清理它混乱)。

相关问题