如何解决Rails 3.1 http stream —头部或底部的js?
| 在Rails 3.1中,可以选择启用HTTP流传输,以便可以分块浏览页面。在有关此功能的Railscast中,Ryan建议启用此功能是一个好主意,以便可以在仍呈现页面的其余部分的同时下拉CSS和JavaScript。 我一直遵循以下准则:脚本在加载所有页面内容之后应位于页面底部,这样可以减少感知的加载时间,但是这样做将不会利用HTTP流。 您认为现在的最佳做法是什么?解决方法
我认为这是一个很好的问题。我觉得不得不为此寻求答案。
将脚本资产放在页面底部的说法是为了防止阻塞浏览器的渲染器,否则渲染器可能会在屏幕上绘制像素,以使用户在页面的其余功能加载时保持忙碌状态。通过HTTP流,我们正在谈论能够做一些有关服务器瓶颈的事情。当我们等待所有那些昂贵的数据库查询和后端服务调用完成时,我们可以加载JS / CSS资产。
在我看来,有一个转折点,您应该您的资产而不是您的资产。如果在服务器准备好其余响应之前就可以下载JS / CSS资产,那么这仅仅是净性能提升。
在以下情况下,请勿页面的资产:
您正在从服务器端缓存中提供页面
服务器的响应时间比JS / CSS的实际资产加载时间快(在计算加载时间时,请仔细考虑这些资产是否可能已经在客户端缓存了)
如果出现以下情况,请页面的资产:
与等待时加载所有JS / CSS资产相比,您的服务器需要更长的响应时间
那个听起来是对的吗?
,对于一般情况,我认为不幸的是,它们仍将跌至最低点。原因是Safari for Mac在开始发出资产请求之前会缓冲1024字节(iPhone和iPad的Safari会缓冲512字节)。
由于文档的标题通常较小,因此Safari用户仍会获得普通的不良体验。
根据我与黎丽丽一起进行的一些测试,Firefox,Opera和IE8不会缓冲,Chrome会缓冲252个字节。
我仍在对此进行研究,但在撰写本文时,这是我的结论。
,对主观问题的主观答案:
库(和函数定义在开头)均作为静态资产提供,因此可以对其进行缓存。
\'triggers \'到脚本块页面底部的回调等。