0

在 Ruby on Rails 开发环境中,在 Firefox 上 30 秒后会显示一个页面,但在 IE 8(使用 IE 7 兼容模式)上需要 90 秒。

进一步调查显示,应该是 Javascript 导致页面变慢,因为如果关闭 Javascript,那么页面内容也会在 30 秒后显示。

因为可能有 7 或 8 个 jQuery 插件、Facebook 脚本和 Google Analytics 脚本,所以将所有 Javascript 代码移动到 HTML 文件的末尾需要相当长的时间,(这应该会加快页面内容查看速度,以便内容30 秒后显示,就像 Firefox 一样),有没有办法强制 IE 在执行完所有 Javascript 代码之前显示页面内容?

我认为 IE 可能正在等待所有 Javascript 代码首先完成,因为如果有document.write()语句,应该在 HTML 中...... Firefox 或 Chrome 不会等待,而是立即显示内容。

(在生产服务器上,页面将在 5 到 7 秒后显示在 Firefox 上,因为缓存了很多“部分”(HTML 子组件)。IE 8 也需要更长的时间,大约 40 秒左右。 )

PS Javascript 嵌入整个 HTML 的一个重要原因可能是,如果有一个“图像轮播”,那么 HTML 代码是在一个“部分”中,这是一个由 HAML 文件生成的 HTML 文件,所有HTML 和 Javascript 代码都在这个文件中,为了更好的封装,而不是将 HTML 放在一个文件中,而将 Javascript 放在另一个文件中,但我想知道如果所有这些 Javascript 代码块都只使用 jQuery 的$(document).ready(function() { ... }),那么这些代码会怎样阻止减慢IE上的页面显示?

4

2 回答 2

0

不幸的是,假设您的 jQuery 插件都在等待 dom 在 IE 中完全加载是安全的。一种解决方案是尝试加快页面加载速度。这里有一些很好的方法来做到这一点:

  1. 不要自己托管 jQuery。从 Google 或 Microsoft CDN 加载它。这将减少与您的 Web 服务器相关的连接。
  2. 通过 jQuery 动态加载内容。事后很难重新连接东西,但它肯定会让您逐步加载内容并营造页面加载速度更快的印象。
  3. 如果可能,将所有 javascript 放在页面底部。
  4. 尽可能在 jQuery 中消除对 document.ready 的调用。
  5. 使用这个 jQuery 插件延迟加载图像:http: //www.appelsiini.net/2007/9/lazy-load-images-jquery-plugin 它会导致页面初始显示期间内容的下载量减少。
  6. 将第三方 CDN 用于托管脚本和图像,或者至少在另一个域中。加载同一个域是一个瓶颈
于 2010-07-20T22:03:49.087 回答
0

我还建议日产范在第 3 点所说的话,但有一项修正。将所有不必要的脚本移到页面底部,只留下 jquery 和可能还有一个脚本。

我建议的另一件事是研究使用 LAB.js,它会强制浏览器并行处理 JS 以及其他页面项目,因此可以让您在加载过程中减少相当多的时间。

http://labjs.com/

于 2011-02-01T19:12:03.247 回答