Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:页面加载时间非常长_Ruby On Rails_Loading - Fatal编程技术网

Ruby on rails Rails:页面加载时间非常长

Ruby on rails Rails:页面加载时间非常长,ruby-on-rails,loading,Ruby On Rails,Loading,我有一个rails项目。 我在一个控制器中发现了一件非常奇怪的事情:浏览器需要大约3分钟来加载页面,但Rails会在日志中写入: Completed 200 OK in 20563ms (Views: 17144.2ms | ActiveRecord: 324.4ms) 我知道21秒很长,但不是3分钟。 我知道这些数据还不够,但我不希望得到完整的答案,只希望找到一个有问题的指针。 此页面的大小约为5 Mb。正如您所见,大部分时间都花在“空闲”阶段。这包括加载页面上所有资源(图像、样式表、ja

我有一个rails项目。 我在一个控制器中发现了一件非常奇怪的事情:浏览器需要大约3分钟来加载页面,但Rails会在日志中写入:

Completed 200 OK in 20563ms (Views: 17144.2ms | ActiveRecord: 324.4ms)
我知道21秒很长,但不是3分钟。

我知道这些数据还不够,但我不希望得到完整的答案,只希望找到一个有问题的指针。
此页面的大小约为5 Mb。

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

这可以是托管在某个服务器上的单个资源,该服务器对您的请求的响应非常慢。所以,即使你已经加载了所有内容,但是你有一个谷歌托管的jquery文件,并且互联网连接非常糟糕,那么你会看到“空闲”会占用很多时间


但是,在您的情况下,它看起来像5MB页面上的一些图像。

延迟可能是由
config.assets.debug=true
内部的
config/environments/development.rb
引起的。将此设置为
false
可以解决您的问题

通过这样做,源文件被合并在一起,而源映射将不会 工作(例如,如果使用Sass/咖啡,您将无法在devtools中看到它)


经过长时间的搜索,我发现了一个问题。
它不需要对数据库进行查询,因为数据库为主要对象加载了许多相关对象。但我不明白为什么需要这么多时间(可能是GC清理混乱)。

谢谢你的回答,但5Mb的数据只是来自Rails服务器(非常大的表)。我注意到:rails在日志中写入完整消息之后,在浏览器接收日期之前,ruby进程占用处理器的50%。我认为可能是中间件方面的问题。可能您有一个双核处理器,Ruby占用了您100%的CPU时间。这可能是一些处理您的响应的中间件,但您可以在页面生成时优化页面呈现,而不是等到页面全部呈现后才将其发送到客户端。您是否使用CDN为页面上的资产提供服务?您是否也在本地或仅在prod中看到这种行为?您的大多数图像是来自其他网站还是存储在您的资产管道中?在chrome developer console中发布“网络”选项卡的屏幕截图,以便我们可以准确地看到哪个请求需要多长时间。同时确保您没有执行
n+1
样式的查询。在模板视图中调用关联时,这是一个简单的错误。