Rails有助于加快从底层加载javascript的速度

Rails有助于加快从底层加载javascript的速度,javascript,ruby-on-rails,ruby,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby,Ruby On Rails 3,我有这个问题,我有一些javascript显示flexibg图像。它只有在页面底部才有效。就在之前 问题是javascript作为最后一个加载。我可以看到flexi bg的图像,只是希望不好 我的代码: <%= javascript_include_tag 'flexibg.js' %> </body> 我该怎么做才能使flexi bg javascript作为第一个或更快的脚本加载 编辑: 我已经将javascript移到了body标记的顶部,它仍然可以工作。但这

我有这个问题,我有一些javascript显示flexibg图像。它只有在页面底部才有效。就在之前

问题是javascript作为最后一个加载。我可以看到flexi bg的图像,只是希望不好

我的代码:

<%= javascript_include_tag 'flexibg.js' %>
</body>

我该怎么做才能使flexi bg javascript作为第一个或更快的脚本加载

编辑:


我已经将javascript移到了body标记的顶部,它仍然可以工作。但这是缓慢的地狱

好的,要理解您的问题,您需要基本了解页面的加载方式。简短的解释(不是100%准确,但足够好)是浏览器从页面的顶行开始逐行运行。当它点击每个脚本标记时,它会加载它(并且在完成之前不会移动到其余的行,这就是为什么将脚本标记放在底部被认为是最佳实践的原因)

一旦浏览器(在其看来)具有足够的渲染价值,它就会开始渲染它所拥有的内容。很可能这就是造成问题的原因:浏览器最初加载的图像尺寸不正确,只有在加载/运行JS时才设置正确的尺寸

要解决此问题,您必须首先隐藏整个页面,然后在加载页面后显示它。基本上,你想做一些事情来达到以下效果:

<script src="yourFile.js"/> <!-- This could go at the end -->
<body id="theBody" style="display:none"> <!-- rest of document --></body>
<script>document.getElementById("theBody").style.display = "";</script>

document.getElementById(“theBody”).style.display=“”;
这样,浏览器将点击BODY标记和后续内容,但由于display:none样式,它不会渲染任何内容。然后,当浏览器到达末尾时,它将点击删除display:none样式的脚本标记,显示页面


这只是一个简单的例子,一些细节可能会被忽略(例如,我认为在body标记之后不允许使用脚本标记),但希望您能理解。如果没有,请发表评论,我将尝试进一步解释。

很难准确理解您的问题。动态加载内容的Javascript可能应该等到页面加载完毕。通过将
标记放在
前面,可以帮助确保在脚本启动之前加载所有内容。如果浏览器必须计算可用空间,这会对图像产生影响。奇怪的是javascript总是在页面刷新时加载。我已设置:cache=>true。为什么图像总是重新加载?