<?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; css</title>
	<atom:link href="http://zhiqiang.org/blog/tag/css/feed" rel="self" type="application/rss+xml" />
	<link>http://zhiqiang.org/blog</link>
	<description>理工科背景的证券从业人员</description>
	<lastBuildDate>Sun, 05 Feb 2012 03:59:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>加速blog：关于javascript(css)</title>
		<link>http://zhiqiang.org/blog/it/speedup-blog-about-javascript-css.html</link>
		<comments>http://zhiqiang.org/blog/it/speedup-blog-about-javascript-css.html#comments</comments>
		<pubDate>Tue, 04 Dec 2007 12:07:22 +0000</pubDate>
		<dc:creator>zhiqiang</dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[网页技术]]></category>
		<category><![CDATA[速度优化.javascript]]></category>

		<guid isPermaLink="false">http://zhiqiang.org/blog/?p=712</guid>
		<description><![CDATA[博客 » IT技术 » 网页技术 » 这里先谈一下关于javascript和CSS的问题。 压缩你的javascript和css 这里的压缩和前面的GZIP压缩不同，而是压缩空格，去除注释等，调整顺序等。如果你的服务器不支持GZIP压缩，你就更应该使用下面的压缩工具处理你的css和javascript了。 压缩CSS：压缩比率能达到20%到50%。 压缩javascript：即使是最安全的压缩模式，压缩比率也能达到20%到50%。 警告：以上压...]]></description>
			<content:encoded><![CDATA[<p id="breadcrumb" class="breadcrumb"><a href="http://zhiqiang.org/blog/">博客</a> » <a href="http://zhiqiang.org/blog/category/it">IT技术</a> » <a href='http://zhiqiang.org/blog/tag/%e7%bd%91%e9%a1%b5%e6%8a%80%e6%9c%af'>网页技术</a>  » </p><p>这里先谈一下关于javascript和CSS的问题。</p>
<h3>压缩你的javascript和css</h3>
<p>这里的压缩和前面的GZIP压缩不同，而是压缩空格，去除注释等，调整顺序等。如果你的服务器不支持GZIP压缩，你就更应该使用下面的压缩工具处理你的css和javascript了。</p>
<p><a href="http://www.cssdrive.com/index.php/main/csscompressoradvanced/">压缩CSS</a>：压缩比率能达到20%到50%。</p>
<p>压缩javascript：即使是最安全的压缩模式，压缩比率也能达到20%到50%。</p>
<p>警告：以上压缩会破坏文档格式，请保留好压缩前文档的备份。</p>
<h3>合并javascript和css文件</h3>
<p>这种方面比较繁琐，完全是体力活。可以手动把文件内容都复制粘贴到一起，也可以新写一个php文件include所有需要的文件。在<a href="http://zhiqiang.org/blog/it/wordpress-accelerate-the-pace-of-pages-printed-in-the-generation-and.html">加快WordPress的页面生成和载入速度</a>有比较详细的操作方法。</p>
<h3>javasctip和css文件位置</h3>
<p>一般来说，CSS最好放在HEAD区域内（即&lt;body&gt;之前），这样可以减少页面重绘。javascipt文件越靠后引用越好，比如Google Analytics的统计代码最好放在&lt;/body&gt;之前。也可以考虑<a href="http://msdn.microsoft.com/en-us/library/ms533719.aspx" target="_blank">script的defer属性</a>。</p>
<div><h4>相关文章</h4><ul><li><a href="http://zhiqiang.org/blog/it/speedup-website-with-css-sprites.html">用CSS Sprites让网站再加速</a></li><li><a href="http://zhiqiang.org/blog/it/dreamhost-on-gzip-cache.html">Dreamhost上的GZIP &#038; Cache</a></li><li><a href="http://zhiqiang.org/blog/it/innerhtml-2-cd-issue-dynamic-modification-table-function-of-js.html">innerHTML只读问题 &amp; 两个动态修改Table的js函数</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-blog-about-images.html">加速blog：处理页面图片</a></li></ul></div>    <p></p>
    <hr noshade style="margin:0;height:1px" />
    <p>&copy; zhiqiang for <a href="http://zhiqiang.org/blog">阅微堂</a>, 2007. | <a href="http://zhiqiang.org/blog/it/speedup-blog-about-javascript-css.html">&#38142;&#25509;</a> | <a href="http://zhiqiang.org/blog/it/speedup-blog-about-javascript-css.html#comments">0&#26465;&#35780;&#35770;</a></p>]]></content:encoded>
			<wfw:commentRss>http://zhiqiang.org/blog/it/speedup-blog-about-javascript-css.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用CSS Sprites让网站再加速</title>
		<link>http://zhiqiang.org/blog/it/speedup-website-with-css-sprites.html</link>
		<comments>http://zhiqiang.org/blog/it/speedup-website-with-css-sprites.html#comments</comments>
		<pubDate>Tue, 09 Oct 2007 08:30:22 +0000</pubDate>
		<dc:creator>zhiqiang</dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[CSS Sprites]]></category>
		<category><![CDATA[缓存]]></category>
		<category><![CDATA[网站加速]]></category>
		<category><![CDATA[网页技术]]></category>

		<guid isPermaLink="false">http://zhiqiang.org/blog/posts/speedup-website-with-css-sprites.html</guid>
		<description><![CDATA[博客 » IT技术 » 缓存 » 我对于blog的速度有着变态的需求. 网站速度与HTML请求数目有很直接的关系，所以我一直没有在网页上放过多的背景图片——注意这里有个网页加速的小技巧，对于网页上固定位置的图片，应该尽量使用CSS背景图片，而不要用img标签嵌入。 为减少页面上的背景图片数量，嵌入式图片是一个好主意，data: URL scheme可以让你把图片信息直接嵌入在CSS语句中，...]]></description>
			<content:encoded><![CDATA[<p id="breadcrumb" class="breadcrumb"><a href="http://zhiqiang.org/blog/">博客</a> » <a href="http://zhiqiang.org/blog/category/it">IT技术</a> » <a href='http://zhiqiang.org/blog/tag/%e7%bc%93%e5%ad%98'>缓存</a>  » </p><p><img style="margin: 0px 10px 0px 0px" src="http://www.w3schools.com/css/logocss.gif" align="left"/> 我对于blog的速度有着变态的需求. 网站速度与HTML请求数目有很直接的关系，所以我一直没有在网页上放过多的背景图片——注意这里有个网页加速的小技巧，对于网页上固定位置的图片，应该尽量使用CSS背景图片，而不要用img标签嵌入。</p>
<p>为减少页面上的背景图片数量，嵌入式图片是一个好主意，<a href="http://tools.ietf.org/html/rfc2397"><code>data:</code> URL scheme</a>可以让你把图片信息直接嵌入在CSS语句中，理论上而言这是最好的解决方案。可惜目前IE不支持！又是万恶的IE。下面是效果图(Firefox有效)：</p>
<p align="center"><img alt="You see this because you are using IE!" src="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFzByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSpa/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJlZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uisF81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PHhhx4dbgYKAAA7"/></p>
<p>另外一个就是CSS Sprites了，很久以前就见到过，不过操作比较复杂，所以一直没有用。今天，看到一个<a href="http://realazy.org/blog/2007/10/08/css-sprites/" target="_blank">更详细的介绍</a>，而且Yahoo和Facebook都在用这种方式，见<a href="http://developer.yahoo.com/yui/build/assets/skins/sam/sprite.png" target="_blank" rel="nofollow">这里</a>和这里。我也决定紧跟一下潮流。</p>
<p>CSS Sprites就是将网页上所有的背景图片都放在一张大图片上，<a href="http://realazy.org/blog/2007/10/08/css-sprites/" target="_blank">更详细的介绍</a></p>
<blockquote><p>在需要用到图片的时候，现阶段是通过CSS属性<code>background-image</code>组合<code>background-repeat</code>, <code>background-position</code>等来实现......我们的主角是，你一定猜到了，就是<code>background-position</code>。通过调整<code>background-position</code>的数值，背景图片就能以不同的面貌出现在你眼前。其实图片整体面貌没有变，由于图片位置的改变，你看到只该看到的而已。就好比手表上的日期，你今天看到是21，明天看到是22，是因为它的<strong>position</strong>往上跳了一格。所以你也大概了解到，CSS Sprites一般只能使用到固定大小的盒子（box）里，这样才能够遮挡住不应该看到的部分。</p>
</blockquote>
<p>比如本站的所有背景图片已经整合成<a href="http://zhiqiang.org/blog/wp-content/themes/yuewei/images/b.gif" target="_blank">单独一张</a>，然后通过CSS定义背景：</p>
<blockquote><pre>.<span style="color: #800000">bloglines</span>, .<span style="color: #800000">zhuaxia</span>, .<span style="color: #800000">google</span>, {
    <span style="color: #ff0000">background-image</span>: <span style="color: #0000ff">url(images/b.gif)</span>;
}

.<span style="color: #800000">bloglines</span> { <span style="color: #ff0000">background-position</span>: <span style="color: #0000ff">0 -216px</span>; }
.<span style="color: #800000">zhuaxia</span> { <span style="color: #ff0000">background-position</span>: <span style="color: #0000ff">0 -332px</span>; }
.<span style="color: #800000">google</span> { <span style="color: #ff0000">background-position</span>: <span style="color: #0000ff">0 -448px</span>; }</pre>
</blockquote>
<p>上面这一段代码用同一张背景图片生成了Google，Zhuaxia，Bloglines的订阅图片。效果可见右侧栏的订阅区，与各自指定图片背景效果完全一样。</p>
<p>上面最麻烦的一个地方在于如何生成大图片，利用PhotoShop的Merge功能可以把图片整合在一起，但每个小图片在大图片的位置参数需要一个一个去弄，比较麻烦，但是比较自由。利用<a href="http://spritegen.website-performance.org/" target="_blank">CSS Sprites Generator</a>，一切都自动搞定。这个网站支持上传图片的ZIP压缩包，然后生成一张大图片，已经以图片文件名为类名的CSS语句，自动给出每个图片对应的位置。另外还可以设置各个小图片之间的间隔，以适应内容的适度拉伸。</p>
<p>btw，提一下一个APACHE的mod_expires模块，这个模块可以要求服务器缓存制定类型的文件。比如下面的语句(写入.htaccess文件)要求缓存图片, css, js等一个月：</p>
<blockquote><pre><span style="color: #0000ff">&lt;</span><span style="color: #800000">IfModule</span> <span style="color: #ff0000">mod_expires</span>.<span style="color: #ff0000">c</span><span style="color: #0000ff">&gt;</span>
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType text/css A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/html A600
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">IfModule</span><span style="color: #0000ff">&gt;</span></pre>
</blockquote>
<p>不过似乎deamhost和bluehost都没有这个模块，但阅微堂所在的CPH服务器是有的...&nbsp; </p>
<div><h4>相关文章</h4><ul><li><a href="http://zhiqiang.org/blog/it/speedup-blog-about-images.html">加速blog：处理页面图片</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-blog-about-javascript-css.html">加速blog：关于javascript(css)</a></li><li><a href="http://zhiqiang.org/blog/it/dreamhost-on-gzip-cache.html">Dreamhost上的GZIP &#038; Cache</a></li><li><a href="http://zhiqiang.org/blog/it/innerhtml-2-cd-issue-dynamic-modification-table-function-of-js.html">innerHTML只读问题 &amp; 两个动态修改Table的js函数</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-blog-set-browser-cache.html">加速blog：设置浏览器缓存</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-blog-cache-on-server.html">加速blog：服务器端的中转和缓存</a></li><li><a href="http://zhiqiang.org/blog/it/using-htaccess-to-speed-blog.html">设置blog的缓存和压缩</a></li></ul></div>    <p></p>
    <hr noshade style="margin:0;height:1px" />
    <p>&copy; zhiqiang for <a href="http://zhiqiang.org/blog">阅微堂</a>, 2007. | <a href="http://zhiqiang.org/blog/it/speedup-website-with-css-sprites.html">&#38142;&#25509;</a> | <a href="http://zhiqiang.org/blog/it/speedup-website-with-css-sprites.html#comments">17 &#26465;&#35780;&#35770;</a></p>]]></content:encoded>
			<wfw:commentRss>http://zhiqiang.org/blog/it/speedup-website-with-css-sprites.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Dreamhost上的GZIP &amp; Cache</title>
		<link>http://zhiqiang.org/blog/it/dreamhost-on-gzip-cache.html</link>
		<comments>http://zhiqiang.org/blog/it/dreamhost-on-gzip-cache.html#comments</comments>
		<pubDate>Sun, 01 Apr 2007 11:09:54 +0000</pubDate>
		<dc:creator>zhiqiang</dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[GZIP]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://zhiqiang.org/blog/553.html</guid>
		<description><![CDATA[博客 » IT技术 » Dreamhost » 用WordPress的都知道，WordPress可以打开GZIP传输，压缩比率能达到60%到80%。下表是本blog首页在Web Page Analyzer上的测试报告，此页面上包括css, js所有东西加起来才14K。 QTY SIZE# TYPE URL 1 6999 HTML http://zhiqiang.org/blog/ 1 2593 SCRIPT http://zhiqiang.org/blog/.../comment.js.php 1 2302 SCRIPT http://zhiqiang.org/.../all.js.php 1 2048 CSS http://zhiqiang.org/.../style.css.php 1 431 IMG http://feeds.feedburner.com/...]]></description>
			<content:encoded><![CDATA[<p id="breadcrumb" class="breadcrumb"><a href="http://zhiqiang.org/blog/">博客</a> » <a href="http://zhiqiang.org/blog/category/it">IT技术</a> » <a href='http://zhiqiang.org/blog/tag/dreamhost'>Dreamhost</a>  » </p><p>用WordPress的都知道，WordPress可以打开GZIP传输，压缩比率能达到60%到80%。下表是本<a href="http://zhiqiang.org/blog/">blog首页</a>在<a href="http://www.websiteoptimization.com/services/analyze/index.html" target="_blank">Web Page Analyzer</a>上的测试报告，此页面上包括css, js<strong>所有东西</strong>加起来才<strong>14K。</strong></p>
<p align="center">
<table class="t" border="1">
<tbody>
<tr>
<th>QTY</th>
<th>SIZE#</th>
<th>TYPE</th>
<th>URL</th>
</tr>
<tr>
<td nowrap>1 </td>
<td nowrap>6999 </td>
<td nowrap>HTML </td>
<td nowrap><a href="http://zhiqiang.org/blog/">http://zhiqiang.org/blog/</a> </td>
</tr>
<tr>
<td nowrap>1 </td>
<td nowrap>2593 </td>
<td nowrap>SCRIPT </td>
<td nowrap><a href="http://zhiqiang.org/blog/wp-content/plugins/ajaxcomment/comment.js.php">http://zhiqiang.org/blog/.../comment.js.php</a> </td>
</tr>
<tr>
<td nowrap>1 </td>
<td nowrap>2302 </td>
<td nowrap>SCRIPT </td>
<td nowrap><a href="http://zhiqiang.org/blog/jscript/all.js.php">http://zhiqiang.org/.../all.js.php</a> </td>
</tr>
<tr>
<td nowrap>1 </td>
<td nowrap>2048 </td>
<td nowrap>CSS </td>
<td nowrap><a href="http://zhiqiang.org/blog/wp-content/themes/phoenixblue2/style.css.php">http://zhiqiang.org/.../style.css.php</a> </td>
</tr>
<tr>
<td nowrap>1 </td>
<td nowrap>431 </td>
<td nowrap>IMG </td>
<td nowrap><a href="http://feeds.feedburner.com/%7Efc/zhiqiang?bg=99CCFF&#038;ampfg=444444&#038;ampanim=0">http://feeds.feedburner.com/~fc/zhiqiang</a> </td>
</tr>
<tr>
<td nowrap>5 ^ </td>
<td nowrap>14373* </td>
<td> </td>
<td>Total (^unique objects)</td>
</tr>
</tbody>
</table>
<p>Dreamhost还用的是Apache 1.3(Am I wrong？)，所以没有mod_deflate模块，而用的是mod_gzip模块，这个模块直接在磁盘上读写，效率比前者要低。不过有总比没有好，毕竟压缩比率很高。</p>
<p>但诡异的是，服务器默认对CSS和JS不作压缩。写信去问了dreamhost客服，也没有什么好方法。最后我采用的方法是用php给包一层：用style.css.php来代替style.css：</p>
<blockquote><pre><span style="color: #0000ff">&lt;?</span>php <span style="color: #008000"># this is the file style.css.php, who contains style.css</span>
<span style="color: #008000"># set the request file name</span>
$<a style="color: #ffa500" href="http://cn.php.net/manual/en/function.file.php">file</a>="<span style="color: #8b0000">style.css</span>";

<span style="color: #008000"># Set Expires, cache the file on the browse</span>
<span style="color: #008000"># Delete it if you don't want it</span>
<a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Expires:</span>".<a style="color: #ffa500" href="http://cn.php.net/gmdate">gmdate</a>("<span style="color: #8b0000">D, d M Y H:i:s</span>", <a style="color: #ffa500" href="http://cn.php.net/time">time</a>()+15360000)."<span style="color: #8b0000">GMT</span>");
<a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Cache-Control: max-age=315360000</span>");

<span style="color: #008000"># set the last modified time</span>
$mtime = <a style="color: #ffa500" href="http://cn.php.net/filemtime">filemtime</a>($<a style="color: #ffa500" href="http://cn.php.net/manual/en/function.file.php">file</a>);
$gmt_mtime = <a style="color: #ffa500" href="http://cn.php.net/gmdate">gmdate</a>('<span style="color: #8b0000">D, d M Y H:i:s</span>', $mtime) . '<span style="color: #8b0000"> GMT</span>';
<a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Last-Modified:</span>" . $gmt_mtime);

<span style="color: #008000"># output a mediatype header</span>
$ext = <a style="color: #ffa500" href="http://cn.php.net/array_pop">array_pop</a>(<a style="color: #ffa500" href="http://cn.php.net/explode">explode</a>('<span style="color: #8b0000">.</span>', $<a style="color: #ffa500" href="http://cn.php.net/manual/en/function.file.php">file</a>));
<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.switch.php">switch</a> ($ext){
<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.switch.php">case</a> '<span style="color: #8b0000">css</span>':
 <a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Content-type: text/css</span>");
 <a style="color: #0000ff" href="http://cn.php.net/break">break</a>;
<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.switch.php">case</a> '<span style="color: #8b0000">js</span>' :
 <a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Content-type: text/javascript</span>");
 <a style="color: #0000ff" href="http://cn.php.net/break">break</a>;
<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.switch.php">case</a> '<span style="color: #8b0000">gif</span>':
 <a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Content-type: image/gif</span>");
 <a style="color: #0000ff" href="http://cn.php.net/break">break</a>;
<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.switch.php">case</a> '<span style="color: #8b0000">jpg</span>':
 <a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Content-type: image/jpeg</span>");
 <a style="color: #0000ff" href="http://cn.php.net/break">break</a>;
<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.switch.php">case</a> '<span style="color: #8b0000">png</span>':
 <a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Content-type: image/png</span>");
 <a style="color: #0000ff" href="http://cn.php.net/break">break</a>;
<a style="color: #0000ff" href="http://cn.php.net/manual-lookup.php?pattern=default&amp;lang=en&amp;scope=404quickref">default</a>:
 <a style="color: #ffa500" href="http://cn.php.net/manual/en/function.header.php">header</a>("<span style="color: #8b0000">Content-type: text/plain</span>");
}

<span style="color: #008000"># GZIP the content</span>
<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.if.php">if</a>(<a style="color: #ffa500" href="http://cn.php.net/extension_loaded">extension_loaded</a>('<span style="color: #8b0000">zlib</span>')){<a style="color: #ffa500" href="http://cn.php.net/ob_start">ob_start</a>();<a style="color: #ffa500" href="http://cn.php.net/ob_start">ob_start</a>('<span style="color: #8b0000">ob_gzhandler</span>');}

<span style="color: #008000"># echo the file's contents</span>
<a style="color: #0000ff" href="http://cn.php.net/echo">echo</a> <a style="color: #ffa500" href="http://cn.php.net/implode">implode</a>('<span style="color: #8b0000"></span>', <a style="color: #ffa500" href="http://cn.php.net/manual/en/function.file.php">file</a>($<a style="color: #ffa500" href="http://cn.php.net/manual/en/function.file.php">file</a>));

<a style="color: #0000ff" href="http://cn.php.net/manual/en/control-structures.if.php">if</a>(<a style="color: #ffa500" href="http://cn.php.net/extension_loaded">extension_loaded</a>('<span style="color: #8b0000">zlib</span>')){
<a style="color: #ffa500" href="http://cn.php.net/ob_end_flush">ob_end_flush</a>();
<span style="color: #008000"># set header the content's length;</span>
<span style="color: #008000"># header("Content-Length: ".ob_get_length()); # (It doesn't work? )</span>
<a style="color: #ffa500" href="http://cn.php.net/ob_end_flush">ob_end_flush</a>();
}
<span style="color: #0000ff">?&gt;</span></pre>
</blockquote>
<p>上面代码不仅压缩代码，而且要求浏览器端Cache这个文件。甚至，可以把所有css文件都放到一个php文件里，只要在echo处加入多个文件即可。</p>
<p>下面是一些常用的测试网站：</p>
<ul>
<li><a href="http://www.gidnetwork.com/tools/gzip-test.php" target="_blank">GZIP Test</a>: 测试一个URL地址是否支持GZIP传输，以及压缩比率。
</li>
<li><a href="http://www.websiteoptimization.com/services/analyze/index.html" target="_blank">Web Page Analyzer</a>：网站页面速度报告
</li>
<li><a href="http://www.ircache.net/cgi-bin/cacheability.py" target="_blank">Cacheability Test</a>: 测试一个页面是否可Cache</li>
</ul>
<p>参考资料：</p>
<ul>
<li><a href="http://www.mnot.net/cache_docs/" target="_blank">Caching Tutorial</a>
</li>
<li><a href="http://blog.htmlor.com/2006/08/03/serving_javascript_fast_chinese/">flickr对javascript干的好事</a>
</li>
<li><a href="http://www.badpenguin.org/php-howto-control-page-caching" target="_blank">Working with cached pages</a></li>
</ul>
<div><h4>相关文章</h4><ul><li><a href="http://zhiqiang.org/blog/it/innerhtml-2-cd-issue-dynamic-modification-table-function-of-js.html">innerHTML只读问题 &amp; 两个动态修改Table的js函数</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-blog-set-browser-cache.html">加速blog：设置浏览器缓存</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-website-with-css-sprites.html">用CSS Sprites让网站再加速</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-blog-gzip-javascript-css.html">加速blog：GZIP压缩传输你的文件</a></li><li><a href="http://zhiqiang.org/blog/it/speedup-blog-about-javascript-css.html">加速blog：关于javascript(css)</a></li><li><a href="http://zhiqiang.org/blog/it/using-htaccess-to-speed-blog.html">设置blog的缓存和压缩</a></li><li><a href="http://zhiqiang.org/blog/it/to-get-gibberish-wordpress-move-to-dreamhost.html">搞定乱码，WordPress搬家到dreamhost</a></li><li><a href="http://zhiqiang.org/blog/it/dreamhost-system-load-average-load-recording-and-analysis.html">Dreamhost系统Load average负载记录和分析</a></li><li><a href="http://zhiqiang.org/blog/it/move-to-the-blog-server-bluehost.html">blog服务器搬家到bluehost</a></li></ul></div>    <p></p>
    <hr noshade style="margin:0;height:1px" />
    <p>&copy; zhiqiang for <a href="http://zhiqiang.org/blog">阅微堂</a>, 2007. | <a href="http://zhiqiang.org/blog/it/dreamhost-on-gzip-cache.html">&#38142;&#25509;</a> | <a href="http://zhiqiang.org/blog/it/dreamhost-on-gzip-cache.html#comments">18 &#26465;&#35780;&#35770;</a></p>]]></content:encoded>
			<wfw:commentRss>http://zhiqiang.org/blog/it/dreamhost-on-gzip-cache.html/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

