这可能属于“你做不到”的范畴,但我认为至少看看我能做些什么可能是谨慎的。
根据FireBug,我的页面加载时间的主要瓶颈似乎是加载HTML和加载Google adsense和分析之间的差距。请注意,在下面的屏幕截图中,初始GET只需要214毫秒,而adsense +分析加载大约需要130毫秒。但是,由于初始GET和adsense / analytics加载之间存在较大的暂停,整个页面加载时间为1.12秒。
如果它完全没有任何区别,那么该站点正在运行ASP.NET MVC RC1堆栈。
alt text http://kevinwilliampang.com/pics/firebug.jpg
更新:删除adsense和分析后,我仍然看到响应时间很慢。将鼠标悬停在初始GET请求上,我看到以下速度:96ms接收数据,736ms DOMContentLoaded(事件),778ms'加载'(事件)。我猜测性能是我自己的jQuery javascript的结果,它的处理与($ document).ready()事件有关吗?
答案 0 :(得分:4)
您应该将分析代码放在页面底部,以便首先加载其他所有内容。除此之外,我认为你无能为力。
编辑:实际上,我刚刚通过托管您自己的urchin.js文件找到了有趣的blog post加速分析的方法。也许值得一看。
答案 1 :(得分:1)
我从来没有在Stack Overflow上使用Firebug看过类似的东西,我们也使用Google Analytics。
我只是跑了一下,我看到了
的请求 http://www.google-analytics.com/__utm.gif?...
直接在 DOMContentLoaded事件(蓝线)之后发生。所以我首先怀疑AdSense。你试过禁用吗?
答案 2 :(得分:1)
事实上,本周我恰好对此进行了大量研究。长话短说,你被搞砸了。正如其他人所说的那样,你能做的最好就是将它放在请求列表的底部,并使其余的代码依赖于ready而不是onload事件 - jQuery在这里真的很棒。 js的某些部分是静态的,因此如果你为了维护目的而密切注意它,你可以在本地克隆它。
谷歌代码并没有像在这个领域那样有用*,但这是他们的球赛,你所做的任何改变都将是复杂和危险的。从理论上讲,在标题中使用非阻塞脚本调用进行包装是可能的,但是在给定额外抽象的情况下不太可能为您带来好处,并且最终使用adsense,您的有效负载是html源,而不是脚本。
*谷歌有可能有充分的理由,但我无法从他们公开的代码中推断出
答案 3 :(得分:0)
除了把那些包括在关闭身体标签之前,如果你还没有,你可能做的事情可能没有。 JavaScript包括块并行HTTP请求,这就是为什么它们应该不在<head>
答案 4 :(得分:0)
鉴于您的ISP和大多数ISP也会拥有文件的本地缓存,Google的服务器肯定是加载速度最快的部分吗?
你可以在页面加载时将脚本注入头部,但我不确定urchin.js的效果如何。
答案 5 :(得分:0)
可能是您的网页需要花费很长时间才能解析?似乎没有与网络相关的事情发生。在adsense / analytics请求被解雇之前,它只需等待一秒钟。 我不认为你在页面上有几百张桌子或什么? ;)