<?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; MHTML</title>
	<atom:link href="http://www.aoao.org.cn/blog/tag/mhtml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aoao.org.cn</link>
	<description>没落的角落</description>
	<lastBuildDate>Fri, 13 Jan 2012 03:37:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>JavaScript组件打包模式</title>
		<link>http://www.aoao.org.cn/blog/2010/04/js-resource-packages/</link>
		<comments>http://www.aoao.org.cn/blog/2010/04/js-resource-packages/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 08:37:34 +0000</pubDate>
		<dc:creator>aoao</dc:creator>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[Data URI]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MHTML]]></category>
		<category><![CDATA[性能优化]]></category>

		<guid isPermaLink="false">http://www.aoao.org.cn/?p=149</guid>
		<description><![CDATA[js组件通常带着css image ，但这样使用起来可能会有些小麻烦，为了让组件足够的solo，有了把css image也打包在js的想法，然后顺便把请求数变少，这个顺便好像更重要，呵呵。 那怎样打包呢，虽然有resource-packages这样的方案，可是我们的核心用户还在玩ie6这种时尚的浏览器呢！ 我的方案： CSS：CSS可以当成字符串存在js里，并由js动态加到页面上，页面用的可能不...]]></description>
			<content:encoded><![CDATA[<p>js组件通常带着css image ，但这样使用起来可能会有些小麻烦，为了让组件足够的solo，有了把css image也打包在js的想法，然后顺便把请求数变少，这个顺便好像更重要，呵呵。</p>
<p>那怎样打包呢，虽然有<a href="http://limi.net/articles/resource-packages">resource-packages</a>这样的方案，可是我们的核心用户还在玩ie6这种时尚的浏览器呢！</p>
<h4>我的方案：</h4>
<ul>
<li><strong>CSS</strong>：CSS可以当成字符串存在js里，并由js动态加到页面上，页面用的可能不适合，但组件通常不会影响。</li>
<li><strong>image</strong>：CSS里用的图片用dataURI（<a href="http://tools.ietf.org/html/rfc2397">RFC 2397</a>）跟MHTML（<a href="http://tools.ietf.org/html/rfc2557">RFC 2557</a>）的方式编到js里面。（秦歌写的<a href="http://dancewithnet.com/2009/08/15/data-uri-mhtml/">dataURI和MHTML</a>依然推荐给不知道是什么东东的同学看）。CSS里如果要绝对路径同样可以存js，js如果有直接用到的理论上也是可以，但js通常只改className会比较好。</li>
<li><strong>flash</strong>：一些比较小的flash，比如存储，复制等也可以选择打包，不过现在米解决非IE的问题，非IE使用外链吧</li>
</ul>
<p>这个有个<a href="http://labs.aoao.org.cn/yep/test.html">打包测试的例子</a>。</p>
<h4>一些细节和纠结的地方</h4>
<ol>
<li>所有图片都打包到js里不一定合理，打包进去的应该是必用的图片。<br />那排除的图片是再打一个包好呢还是直接用图片？</li>
<li>图片可以先压后编，我选用的图片压缩工具是<a href="http://advsys.net/ken/utils.htm">pngout</a>，而且一般是用<code>-s5</code>。<br />有人做了些测试<a href="http://www.phpied.com/uncompressed-data-in-base64-probably-not/">Uncompressed data in base64? Probably not</a>，大家自行判断。</li>
<li>重复的图片引用直接用dataURI会搞得很大很大，gzip又笨得跟猪一样不会压掉。<br />我是选用存成js变量，淘宝的同学是用提class的方式</li>
<li>MHTML在ie7+/vista缺少结束分割符无法显示，win03sp2缺少<code>Content-Type</code>会有安全提示，原因都MIME不标准，不是所有的东西都可以省。</li>
<li>是选择把所有的东西都打包在一个文件还是按MHTML跟dataURI分类型打包成两份在server按ua派文件或由类库智能去读取，好像后者比较和谐。</li>
<li>swf用dataURI编入有问题，据说fp8没问题，现在都fp10了。<br />另一种solo的方案就是把js打包到swf，不过感觉不和谐</li>
</ol>
<h4>multipart/related例子</h4>
<p>不算标准但能跑，换行也是很重要的</p>
<pre class="code"><code>Content-Type:multipart/related;boundary="_BAIDU_YOUA_BB_YEP"

--_BAIDU_YOUA_BB_YEP
Content-Type:image/png
Content-Location:logo.png
Content-Transfer-Encoding:base64

...base64...

--_BAIDU_YOUA_BB_YEP
Content-Type:image/png
Content-Location:nono.png
Content-Transfer-Encoding:base64

...base64...

--_BAIDU_YOUA_BB_YEP--</code></pre>
<p>btw:上篇文章的评论里发现了<a href="http://duris.ru/">这个打包的站</a>，输出界面很帅 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.aoao.org.cn/blog/2010/04/js-resource-packages/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>MHTML在ie7/vista bug 解决方案</title>
		<link>http://www.aoao.org.cn/blog/2010/01/fixed-mhtml-ie7-vista/</link>
		<comments>http://www.aoao.org.cn/blog/2010/01/fixed-mhtml-ie7-vista/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 13:55:45 +0000</pubDate>
		<dc:creator>aoao</dc:creator>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[MHTML]]></category>

		<guid isPermaLink="false">http://www.aoao.org.cn/?p=146</guid>
		<description><![CDATA[在多数情况下，以增加文件大小代价来换连接数是有价值。而MHTML+dataURI = 省连接数，如果你不知道这是什么东东，可以看秦歌写的Data URI 和 MHTML 因为之前发现在vista上的ie7有bug，且没有好解决方案，所以一直不敢项目上使用，之前虽然有看到有个用304的方案(via Data URIs, MHTML and IE7/Win7/Vista blues)，但觉一来做起来折腾，一来效果也不好，特别是hover时。 ie7 vista的bu...]]></description>
			<content:encoded><![CDATA[<p>在多数情况下，以增加文件大小代价来换连接数是有价值。而MHTML+dataURI = 省连接数，如果你不知道这是什么东东，可以看秦歌写的<a href="http://dancewithnet.com/2009/08/15/data-uri-mhtml/">Data URI 和 MHTML</a></p>
<p>因为之前发现在vista上的ie7有bug，且没有好解决方案，所以一直不敢项目上使用，之前虽然有看到有个用304的方案(via <a href="http://www.phpied.com/data-uris-mhtml-ie7-win7-vista-blues/">Data URIs, MHTML and IE7/Win7/Vista blues</a>)，但觉一来做起来折腾，一来效果也不好，特别是hover时。</p>
<p>ie7 vista的bug大约这样，相应文件一旦local cache 后，浏览器就读不到。</p>
<p>今天，我要骄傲的跟大家，有两种可行的解决方案</p>
<p>方案1</p>
<pre class="code"><code>Content-Type:multipart/related;boundary="_aoao_org_cn"
--_aoao_org_cn
Content-Location:aoao.gif
Content-Transfer-Encoding:base64
... base64...
--_aoao_org_cn--</code></pre>
<p>注意最后的“<code>--_aoao_org_cn--</code>” ，查了不少资料，原来标准写法就是这样！（via<a href="http://tools.ietf.org/html/rfc2557"> rfc2557 第7页</a>） 囧rz</p>
<p>这个故事跟我们说一件事：有问题，查文档。 我之前一直以为cache到本地后浏览器木权限用</p>
<p>方案2</p>
<pre class="code"><code>------=_NextPart_000_0000_12345678.12345678
Content-Location:aoao.gif
Content-Transfer-Encoding:base64
... base64...
</code></pre>
<p>如果你有用ie存mht并研究结构的话，应该会觉得很眼熟，很神奇，但唯一的问题就是只能用一张图片，囧rz 反正有方案1，无视之。</p>
<p>伴随这个不是bug的bug的终结，相应的工具与应用也要浮出水面了。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.aoao.org.cn/blog/2010/01/fixed-mhtml-ie7-vista/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.717 seconds -->

