<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>岁月如歌 &#187; position</title>
	<atom:link href="http://lifesinger.org/blog/tag/position/feed/" rel="self" type="application/rss+xml" />
	<link>http://lifesinger.org/blog</link>
	<description>关注用户体验、前端开发，记录生活点滴、岁月足迹。</description>
	<lastBuildDate>Mon, 06 Sep 2010 15:05:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>内联脚本的位置对性能的影响</title>
		<link>http://lifesinger.org/blog/2009/05/positioning-inline-scripts/</link>
		<comments>http://lifesinger.org/blog/2009/05/positioning-inline-scripts/#comments</comments>
		<pubDate>Sun, 24 May 2009 14:36:08 +0000</pubDate>
		<dc:creator>lifesinger</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[inline]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://lifesinger.org/blog/?p=1818</guid>
		<description><![CDATA[原文 Steve Souders: Positioning Inline Scripts. 好文无需废话，推荐仔细阅读。 测试 值得注意的一个结论： 要避免将内联脚本放在样式表和页面其它资源之间，这非常重要。这会使得看起来像是样式表阻塞了后续资源的下载。这种行为的原因是：所有主流浏览器都会保持CSS和JavaScript的顺序。在样式表完全下载、解析及应用之后，内联脚本才能执行。同时，必须在内联脚本执行后，剩余资源才能下载。这就使得，放在样式表和内联脚本之后的资源，下载被阻塞了。 内联脚本放在样式表之前，样式表和脚本的下载是并发的： 测试页面A：inline_script_position_test1.html 内联脚本放在样式表之后，会导致后续资源的下载被阻塞： 测试页面B：inline_script_position_test2.html 页面A和页面B的唯一区别就是，内联脚本的位置放在样式表前面，但就这么简单的一个位置调整，能节省约100ms下载时间。 实战 来看淘宝网首页的源代码片段： 第15行的内联脚本，放在第11行的样式表后面，直接导致了下面这张timeline: 在tbsp.css没下载完之前，所有资源的下载都阻塞掉了！ 仅要将第15行的内联脚本放到样式表前面，立刻就能提速100多ms.（注：淘宝首页正在做性能优化，这个调整将很快实施） 目前eBay, Amazon等大型站点的首页也存在此问题。国内站点看了下有啊和拍拍。有啊的都外链，没问题（感叹百度的硬件，不在乎多几个HTTP链接数）。拍拍的则都内联，因此也没问题（看完有啊看拍拍，有点怪怪的，说不出来的感觉）。 结尾 页面编码时，在head里，习惯性先写style再写script. 以后遇上inline script时，还是得调整下位置，放到style前面去。]]></description>
			<content:encoded><![CDATA[<h3>原文</h3>
<p>Steve Souders: <a href="http://www.stevesouders.com/blog/2009/05/06/positioning-inline-scripts/">Positioning Inline Scripts</a>. 好文无需废话，推荐仔细阅读。</p>
<h3>测试</h3>
<p>值得注意的一个结论：</p>
<blockquote><p>
要避免将内联脚本放在样式表和页面其它资源之间，这非常重要。这会使得看起来像是样式表阻塞了后续资源的下载。这种行为的原因是：所有主流浏览器都会保持CSS和JavaScript的顺序。在样式表完全下载、解析及应用之后，内联脚本才能执行。同时，必须在内联脚本执行后，剩余资源才能下载。这就使得，放在样式表和内联脚本之后的资源，下载被阻塞了。
</p></blockquote>
<p>内联脚本放在样式表之前，样式表和脚本的下载是并发的<span id="more-1818"></span>：<br />
<img src="http://lifesinger.org/blog/wp-content/uploads/2009/05/inline_script_position1.png" alt="inline_script_position1.png" /></p>
<p>测试页面A：<a href="http://lifesinger.org/lab/2009/inline_script_position_test1.html">inline_script_position_test1.html</a></p>
<p>内联脚本放在样式表之后，会导致后续资源的下载被阻塞：<br />
<img src="http://lifesinger.org/blog/wp-content/uploads/2009/05/inline_script_position2.png" alt="inline_script_position2.png" /></p>
<p>测试页面B：<a href="http://lifesinger.org/lab/2009/inline_script_position_test2.html">inline_script_position_test2.html</a></p>
<p>页面A和页面B的唯一区别就是，内联脚本的位置放在样式表前面，但就这么简单的一个位置调整，能节省约100ms下载时间。</p>
<h3>实战</h3>
<p>来看淘宝网首页的源代码片段：<br />
<img src="http://lifesinger.org/blog/wp-content/uploads/2009/05/inline_script_position3.png" alt="inline_script_position3.png" /></p>
<p>第15行的内联脚本，放在第11行的样式表后面，直接导致了下面这张timeline:<br />
<img src="http://lifesinger.org/blog/wp-content/uploads/2009/05/inline_script_position4.png" alt="inline_script_position4.png" /><br />
在tbsp.css没下载完之前，所有资源的下载都阻塞掉了！</p>
<p>仅要将第15行的内联脚本放到样式表前面，立刻就能提速100多ms.（注：淘宝首页正在做性能优化，这个调整将很快实施）</p>
<p>目前eBay, Amazon等大型站点的首页也存在此问题。国内站点看了下有啊和拍拍。有啊的都外链，没问题（感叹百度的硬件，不在乎多几个HTTP链接数）。拍拍的则都内联，因此也没问题（看完有啊看拍拍，有点怪怪的，说不出来的感觉）。</p>
<h3>结尾</h3>
<p>页面编码时，在head里，习惯性先写style再写script. 以后遇上inline script时，还是得调整下位置，放到style前面去。</p>
]]></content:encoded>
			<wfw:commentRss>http://lifesinger.org/blog/2009/05/positioning-inline-scripts/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
	</channel>
</rss>
