我正在我的Rails应用程序中调试一个非常慢的请求调用。我已经根据自己的喜好优化了控制器方法,Rails的日志告诉我,它已经完成了XX ms (Completed 200 OK in 5049ms (Views: 34.9ms | ActiveRecord: 76.3ms)
)中的操作。但是,在加载页面时,在浏览器中实际呈现任何内容之前很久就会打印此消息;等待时间可达15秒左右。机架迷你分析器确认了这一点,告诉我GET动作(不包括完成控制器动作所需的时间)需要14秒左右。(分析器还确认控制器操作的执行时间约为5秒)。
我不介意控制器操作需要5秒左右,因为我可以对代码的各个部分进行基准测试,并清楚地看到什么是慢的以及为什么慢。我完全不明白为什么这个神秘的滞后时间存在。它在做什么?
发布于 2015-01-09 19:38:39
资产
主要原因可能是资产加载。您在开发环境中吗?默认情况下,资产不是预编译的(我相信资产缓存也是关闭的)
也许您没有看到相关的GET请求,因为您使用了宝石‘静默-资产’。看到关于资产的所有GET请求(javascript/css),我感到很累,所以我把这个gem放在我的Gemfile中,并忘记了它一段时间。但之后仍有很多事情发生。
服务资产的时间可能很长。例如,我正在使用一些jquery,一开始我在application.js
中调用了application.js
。实际上,它只为jquery.ui发送了几十个文件。即使文件很小并且服务速度非常快,在连续的GET请求/响应之间也会有一些延迟,这是我的应用程序在本地主机/开发中响应时间太慢的原因。
您不希望在开发中预编译资产,但是可以去掉无用的资产(如果使用jquery,很可能只需要几个文件,而不是全部)。
在预编译资产的测试/生产中,我的服务器响应时间在10-100倍之间。
https://stackoverflow.com/questions/27867276
复制相似问题