<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[挥得更高]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[在com的世界，deng到顶峰，让你我的双臂挥得更高。]]></description>
<link>http://hi.baidu.com/comdeng</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[wordpress在windows平台下运行缓慢的原因]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/49b318e939828835b90e2d55.html]]></link>
        <description><![CDATA[
		
		在本地装了一个wordpress平台，中文版的，速度很慢，一直都没有搞清楚原因。最开始以为是连接数据库的速度慢造成的，不过直接连mysql的速度还是很快的。今天干脆下了点功夫，逐步跟踪，发现速度原来是在载入中文语言包的时候变慢的。将wp-settings.php中的load_default_textdomain()这一行注释掉，速度就上来了。<br>
wordpress的语言包是后缀为mo的二进制文件，在windows平台下对这种文件的解析和读取异常缓慢，而在linux平台下却基本感觉不出来。所以，如果要在windows平台下使用wordpress的话，要么直接用英文版，要么直接将中文内嵌到程序中去替代英文。 <a href="http://hi.baidu.com/comdeng/blog/item/49b318e939828835b90e2d55.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%C8%D5%BB%FD%D4%C2%C0%DB">日积月累</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/49b318e939828835b90e2d55.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-13  01:06</pubDate>
        <category><![CDATA[日积月累]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/49b318e939828835b90e2d55.html</guid>
</item>

<item>
        <title><![CDATA[ie6对于鼠标图片样式支持的一个缺陷]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/9d21abb7cadc8ffe30add148.html]]></link>
        <description><![CDATA[
		
		<p>在样式表中通过cursor:url(...../xxx.cur), auto;这样的形式可以定义鼠标的样式。虽然ie6下对于背景图片完全可以用相对路径来定义，但鼠标图片却不能这样。</p>
<p>比如有一个样式我这样定义的 .imgSmall{cursor:url(../img/zoonout.cur), auto;}，但是在检查访问日志时却是这样的：</p>
<p>- - [30/Oct/2009:23:01:58 +0800] &quot;GET /img/zoonout.cur HTTP/1.1&quot; 404 805 &quot;http://bo.xianguo.com/home&quot; &quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152)&quot;</p>
<p>也就是说，ie6下对于这种相对路径会识别错误，自动忽略掉前面的两点。<strong>将其改成绝对路径即可避免。</strong></p> <a href="http://hi.baidu.com/comdeng/blog/item/9d21abb7cadc8ffe30add148.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%C8%D5%BB%FD%D4%C2%C0%DB">日积月累</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/9d21abb7cadc8ffe30add148.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-30  23:17</pubDate>
        <category><![CDATA[日积月累]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/9d21abb7cadc8ffe30add148.html</guid>
</item>

<item>
        <title><![CDATA[flash上传文件的cookie问题]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/9e0cbd0ff9af96e7aa645766.html]]></link>
        <description><![CDATA[
		
		上传文件常用的方法是html的file控件（即&lt;input type=&quot;file&quot;&gt;这种标记），另一种办法就是用flash了。<br>
<br>
用html上传文件的好处是浏览器兼容性强，但是存在的问题也是显而易见的：<br>
1、file控件的定制性不强，在有的浏览器里边比较粗糙，不利于更好地统一用户界面；<br>
2、上传时对文件大小的控制需要在服务器端做出判断。也就是说，只有将文件上传到服务器了，才能知道文件是不是超过了制定的大小。对于服务器宝贵的带宽是一种浪费，同时，大的文件上传时间较长，用户需要等待比较多的时间才能得到一个不能继续上传的提示。<br>
<br>
用flash上传文件则相反，具有file控制不可比拟的优势：<br>
1、定制性很强，可以做出很多变化多端的效果来。上传过程还可以做出非常细致的百分比效果出来。<br>
2、能在将文件上传到服务器之前对文件大小做出判断，直接反馈给用户。不但响应时间很快，而且也节省了服务器带宽资源。<br>
<br>
不过，flash的劣势也非常明显——浏览器兼容性较差，主要体现在3个方面：<br>
1、需要安装有flash插件的浏览器才能使用，而且有flash版本本身的兼容性问题。比如，有的用AS3写的代码再flash 8播放器上就不能执行。<br>
不过，flash拥有广泛的使用人群，升级制度也比较严格，大部分的用户都会升级到最新的版本。<br>
<br>
2、有的浏览器在使用flash之前需要点击一次才能激活使用。这个可以通过js写flash代码来绕过激活机制。不过这招貌似在最新的opera里边行不通了。但是，我们也要看到，opera的使用范围毕竟是少数。<br>
<br>
3、存在cookie处理方面的bug。这也正是这篇文章要讨论的主题。<br>
<br>
cookie处理的bug主要体现在，通过非ie浏览器上传图片时，flash会将ie下的cookie发送到服务器端，从而引起cookie处理混乱。当上传的文件依赖于cookie信息时，就会出现错误的情况。比如，如果要求上传文件的用户必须已经登录，那么，如果ie下没有登录，当前这个非ie浏览器就不能上传文件，岂不是很郁闷。<br>
<br>
这种情况的处理其实也就是抓住一点，在上传文件时，通过url将cookie信息传递到服务器端。<br>
<br>
一种办法是flash和js取得通信，js将document.cookie信息传递给flash，flash再将信息在url的参数中传递给服务器端。<br>
<br>
还有一种办法就是，<strong>通过flash控件的flashvars字段给flash传变量</strong>。这种办法能保证在客户端js未开启的情况下也能传递cookie信息给flash，还是比较保险的。不过，需要注意的是，<strong>cookie字符串中的空格的编码可能会导致最后解析出错</strong>。php通过urlencode编码空格时，会转化为%2B，而通过flash解析后，%2B会被解析为+，而不是空格。这有可能导致最后对用户信息的验证失败。<br>
<br>
这种情况下的一个技巧就是，<strong>使用两次urlencode对cookie信息进行编码</strong>，最后flash传递到服务器端时，就能准确地读出原来的值了。<br>
<br> <a href="http://hi.baidu.com/comdeng/blog/item/9e0cbd0ff9af96e7aa645766.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/9e0cbd0ff9af96e7aa645766.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-22  23:38</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/9e0cbd0ff9af96e7aa645766.html</guid>
</item>

<item>
        <title><![CDATA[构建不依赖于cookie的手机端用户登录机制（五）]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/11c19c359c55db1b91ef3952.html]]></link>
        <description><![CDATA[
		
		 
 
 
 
 
 
 
<p align="left" style="text-align: left;" class="MsoNormal"><strong><span style="font-size: 14pt; ">五、</span></strong><strong><span style="font-size: 14pt; Verdana&quot;,&quot;sans-serif&quot;;">wap1.x</span></strong><strong><span style="font-size: 14pt; ">的特殊情况</span></strong><strong><span style="font-size: 14pt; Verdana&quot;,&quot;sans-serif&quot;;"></span></strong></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>不过，在</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wap1.x</span><span>下使用</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wml</span><span>开发的时候，还有一些特殊的情况。比如，</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">url</span><span>中的</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">&amp;</span><span>需要转化为</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">&amp;amp;</span><span>，否则浏览器解释的时候就会报错。因此，对于页面标签和重定向的情况，我们都需要针对</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wap1.x</span><span>的页面做特殊处理。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>重定向的情况很好处理，将第四部分的</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">get_redirect_url</span><span>函数中的</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">$tag=’&amp;’</span><span>，在</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wap1.x</span><span>的环境中替换为</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">$tag=’&amp;amp;’</span><span>即可。不过对于界面标签的处理，则需要我们引入一条新的配置项——</span><strong><span style="Verdana&quot;,&quot;sans-serif&quot;;">arg_separator.output</span></strong><span>。这个配置项用来指定当在</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">url</span><span>中加入</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>参数时，使用什么样的连字符，默认值是</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">&amp;</span><span>。那么，在已知处于</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wap1.x</span><span>环境时，加入如下的语句即可逢凶化吉了：</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><strong><span style="Verdana&quot;,&quot;sans-serif&quot;;">ini_set('arg_separator.output','&amp;amp;');</span></strong></p>
<p align="left" style="text-align: left;" class="MsoNormal"><strong><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></strong></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>好了，到此为止，我们已经基本上能解决掉</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wap</span><span>开发中使用</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">url</span><span>传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>的大部分情况了。看似内容比较多，实际上就介绍了</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">html</span><span>标签中</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">url</span><span>如何传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>和使用重定向时如何传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>两种情况，并对</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wap1.x</span><span>环境下的情况做了一些特殊处理，最终确保不依赖于</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">cookie</span><span>的用户登录机制得以实现的过程。希望这些总结的内容对于</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">wap</span><span>开发者能带来一定的帮助。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p> <a href="http://hi.baidu.com/comdeng/blog/item/11c19c359c55db1b91ef3952.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/11c19c359c55db1b91ef3952.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-04  17:56</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/11c19c359c55db1b91ef3952.html</guid>
</item>

<item>
        <title><![CDATA[构建不依赖于cookie的手机端用户登录机制（四）]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/644f11fa73b51a9d58ee9052.html]]></link>
        <description><![CDATA[
		
		<p align="left" class="MsoNormal" style="text-align: left;"><strong><span style="font-size: 14pt;">四、重定向情况下的传递</span></strong></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>通过第二部分，我们已经能把页面输出的</span><span>sessionId</span><span>传递解决掉了，但这还不是全部。比如，我们经常会通过设置</span><span>header</span><span>来进行页面的重定向。</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>header(‘Location: /hello.php’);</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>在这种情况下，很显然，</span><span>php</span><span>并不会去处理。那么，我们还是需要自己手动来进行调整了。代码如下：</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&lt;?php</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>ini_set('session.use_trans_sid',1);</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>$tags = ini_get('url_rewriter.tags');</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>ini_set('url_rewriter.tags',$tags.',iframe=src,img=src');</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>session_start();</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>function get_redirect_url($url) {</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160; </span>$sessionkey = ini_get('session.name');</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160; </span>$sessionId = session_id();</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160; </span>if (strpos($url,'?') !== false) {</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160;&#160;&#160; </span>$tag = '&amp;';</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160; </span>} else {</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160;&#160;&#160; </span>$tag = '?';</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160; </span>}</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160; </span>$url .= $tag.$sessionKey.'='.$sessionId;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span><span>&#160; </span>return $url;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>}</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>$rurl = get_redirect_url('/hello.php');</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>header('Location: '.$rurl);</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>?&gt;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>通过</span><span>get_redirect_url</span><span>函数，我们就能将重定向的网址也支持传递</span><span>sessionId</span><span>了。</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>太好了，又解决了一种情况。</span></p> <a href="http://hi.baidu.com/comdeng/blog/item/644f11fa73b51a9d58ee9052.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/644f11fa73b51a9d58ee9052.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-04  17:55</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/644f11fa73b51a9d58ee9052.html</guid>
</item>

<item>
        <title><![CDATA[构建不依赖于cookie的手机端用户登录机制（三）]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/0b5f07177905850b4b90a752.html]]></link>
        <description><![CDATA[
		
		 
 
 
 
 
 
 
<p align="left" style="text-align: left;" class="MsoNormal"><strong><span style="font-size: 14pt; ">三、如何确保各种标签传递</span></strong><strong><span style="font-size: 14pt; Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span></strong></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>在前面的例子中，我们已经能让</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">a</span><span>标签的</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">href</span><span>属性正确地附加上</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>了。不过，在实际的开发中，可能会有更加复杂的情况。比如，你可能会用到</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">form</span><span>，也有可能用到</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">iframe</span><span>，甚至即使在使用图片的时候也需要传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>。那么来看下面的代码：</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;?php</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">ini_set('session.use_trans_sid',1);</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">session_start();</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">?&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;a href=&quot;/hello.php&quot;&gt;hello&lt;/a&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;form&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;"><span>&#160; </span>&lt;input type=&quot;submit&quot; value=&quot;submit&quot;/&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;/form&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;iframe src=&quot;/hello.php&quot;&gt;&lt;/iframe&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;img src=&quot;/a.gif&quot;/&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>刷新界面后，输出的代码为：</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<pre><span>&lt;<span class="start-tag">a</span><span class="attribute-name"> href</span>=&quot;<a href="view-source:http://txianguo.com/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013">/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013</a>&quot;&gt;hello&lt;/<span class="end-tag">a</span>&gt;</span></pre>
<pre><span>&#160;</span></pre>
<pre><span>&lt;<span class="start-tag">form</span>&gt;&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">&quot;hidden&quot; </span><span class="attribute-name">name</span>=<span class="attribute-value">&quot;PHPSESSID&quot; </span><span class="attribute-name">value</span>=<span class="attribute-value">&quot;a1ff38e07c28474b80766ef96ad88013&quot; </span><span class="attribute-name">/</span>&gt;</span></pre>
<pre><span><span>&#160; </span>&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">&quot;submit&quot; </span><span class="attribute-name">value</span>=<span class="attribute-value">&quot;submit&quot;</span><span class="attribute-name">/</span>&gt;</span></pre>
<pre><span>&lt;/<span class="end-tag">form</span>&gt;</span></pre>
<pre><span>&#160;</span></pre>
<pre><span>&lt;<span class="start-tag">iframe</span><span class="attribute-name"> src</span>=&quot;<a href="view-source:http://txianguo.com/hello.php">/hello.php</a>&quot;&gt;&lt;/<span class="end-tag">iframe</span>&gt;</span></pre>
<pre><span>&lt;<span class="start-tag">img</span><span class="attribute-name"> src</span>=&quot;<a href="view-source:http://txianguo.com/a.gif">/a.gif</a>&quot; <span class="attribute-name">/</span>&gt;</span></pre>
<p align="left" style="text-align: left;" class="MsoNormal"><span>也就是说，对</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">form</span><span>，已经能很好地传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>了，但是对于</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">iframe</span><span>和</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">img</span><span>，却还是不能传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>。怎么办呢？难道需要我们手动来赋值？</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>其实不然，在第一部分，我们已经提到一个有用的字段了——</span><strong><span style="Verdana&quot;,&quot;sans-serif&quot;;">url_rewriter.tags</span></strong><strong><span>。</span></strong><span>我们尝试增加它对于</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">iframe</span><span>和</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">img</span><span>的支持。代码如下：</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;?php</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">ini_set('session.use_trans_sid',1);</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">$tags = ini_get('url_rewriter.tags');</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">ini_set('url_rewriter.tags',$tags.',iframe=src,img=src');</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">session_start();</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">?&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;a href=&quot;/hello.php&quot;&gt;hello&lt;/a&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;form&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;"><span>&#160; </span>&lt;input type=&quot;submit&quot; value=&quot;submit&quot;/&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;/form&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;iframe src=&quot;/hello.php&quot;&gt;&lt;/iframe&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;img src=&quot;/a.gif&quot; /&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>输出来的结果如下：</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<pre><span>&lt;<span class="start-tag">a</span><span class="attribute-name"> href</span>=&quot;<a href="view-source:http://txianguo.com/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013">/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013</a>&quot;&gt;hello&lt;/<span class="end-tag">a</span>&gt;</span></pre>
<pre><span>&#160;</span></pre>
<pre><span>&lt;<span class="start-tag">form</span>&gt;&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">&quot;hidden&quot; </span><span class="attribute-name">name</span>=<span class="attribute-value">&quot;PHPSESSID&quot; </span><span class="attribute-name">value</span>=<span class="attribute-value">&quot;a1ff38e07c28474b80766ef96ad88013&quot; </span><span class="attribute-name">/</span>&gt;</span></pre>
<pre><span><span>&#160; </span>&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">&quot;submit&quot; </span><span class="attribute-name">value</span>=<span class="attribute-value">&quot;submit&quot;</span><span class="attribute-name">/</span>&gt;</span></pre>
<pre><span>&lt;/<span class="end-tag">form</span>&gt;</span></pre>
<pre><span>&#160;</span></pre>
<pre><span>&lt;<span class="start-tag">iframe</span><span class="attribute-name"> src</span>=&quot;<a href="view-source:http://txianguo.com/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013">/hello.php?PHPSESSID=a1ff38e07c28474b80766ef96ad88013</a>&quot;&gt;&lt;/<span class="end-tag">iframe</span>&gt;</span></pre>
<pre><span>&lt;<span class="start-tag">img</span><span class="attribute-name"> src</span>=&quot;<a href="view-source:http://txianguo.com/a.gif?PHPSESSID=a1ff38e07c28474b80766ef96ad88013">/a.gif?PHPSESSID=a1ff38e07c28474b80766ef96ad88013</a>&quot; <span class="attribute-name">/</span>&gt;</span></pre>
<p align="left" style="text-align: left;" class="MsoNormal"><span>很显然，</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">iframe</span><span>和</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">img</span><span>也能顺利地传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>了。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>到此为止，我们已经能解决大部分的问题了。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p> <a href="http://hi.baidu.com/comdeng/blog/item/0b5f07177905850b4b90a752.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/0b5f07177905850b4b90a752.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-04  17:55</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/0b5f07177905850b4b90a752.html</guid>
</item>

<item>
        <title><![CDATA[构建不依赖于cookie的手机端用户登录机制（二）]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/0db4663ec98ef53771cf6c51.html]]></link>
        <description><![CDATA[
		
		 
 
 
 
 
 
 
<p align="left" style="text-align: left;" class="MsoNormal"><strong><span style="font-size: 14pt; ">二、基本使用方法</span></strong><strong><span style="font-size: 14pt; Verdana&quot;,&quot;sans-serif&quot;;"></span></strong></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>新建一个</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">session.php</span><span>文件，代码为：</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;a href=”hello.php”&gt;hello&lt;/a&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>最后输出来的时候链接地址无疑还是</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">hello.php</span><span>，那么，我们来增加几行代码，让它变得能支持传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;?php</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">ini_set('session.use_trans_sid',1);</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">?&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;a href=”hello.php”&gt;hello&lt;/a&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>在浏览器中看的时候，链接还是没有变化。怎么回事呢？原来服务器端在检测到浏览器端支持</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">cookie</span><span>的情况下，是不会开启</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">url</span><span>传递</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>的。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>不妨试试禁用浏览器的</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">cookie</span><span>。会发现效果依旧。这是怎么回事呢？</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>实际情况是，要让服务器支持替换链接地址，首先要让服务器能获取到</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">sessionId</span><span>。那么我们就要开启</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">session</span><span>才行。这时就要用到</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">session_start</span><span>函数了。再修改一下代码如下：</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;?php</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">ini_set('session.use_trans_sid',1);</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">session_start();</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">?&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&lt;a href=&quot;/hello.php&quot;&gt;hello&lt;/a&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>刷新一下界面，发现生成的源代码已经变成如下的代码了。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="font-size: 12pt; ">&lt;a href=&quot;<a href="view-source:http://txianguo.com/hello.php?PHPSESSID=f10962d83fdfb27b501b53e099916a90">/hello.php?PHPSESSID=f10962d83fdfb27b501b53e099916a90</a>&quot;&gt;hello&lt;/a&gt;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>那么恭喜，我们的目标已经基本完成了。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span style="Verdana&quot;,&quot;sans-serif&quot;;">&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>在前面的代码中，我们都是直接在代码中使用</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">ini_set</span><span>函数对</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">php.ini</span><span>的字段进行设置，这样做有什么好处呢？因为在实际的服务器环境中，可能会运行多个网站，修改</span><span style="Verdana&quot;,&quot;sans-serif&quot;;">php.ini</span><span>中的配置会直接影响到其他网站的运行，而是用在代码中设置则能在最大程度上削弱这种影响。</span><span style="Verdana&quot;,&quot;sans-serif&quot;;"></span></p> <a href="http://hi.baidu.com/comdeng/blog/item/0db4663ec98ef53771cf6c51.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/0db4663ec98ef53771cf6c51.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-04  17:54</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/0db4663ec98ef53771cf6c51.html</guid>
</item>

<item>
        <title><![CDATA[构建不依赖于cookie的手机端用户登录机制（一）]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/75962afa230d9a14a9d31150.html]]></link>
        <description><![CDATA[
		
		<p align="left" style="text-align: left;" class="MsoNormal"><span>手机端登录网站的问题是一个困扰我很久的问题。总是会有那么一些用户告诉我，他的手机不能登录网站了。要想能有效地解决手机登录的问题，一种方案就是尽可</span><span> </span><span>能多地模拟出用户的手机端环境出来，针对这些具体的环境对代码进行测试和调整。另一种方案就是尽可能地让网站拜托对于客户端环境的依赖，创建更加健壮的代码。</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>随着信息技术的发展，手机本身的硬件设备越来越先进，功能也越来越全面，对于</span><span>cookie</span><span>的支持显然不成问题。不过，总还是有一部分人群在使用着比较低端</span><span> </span><span>的手机。做为开发者来说，要能最大范围地满足不同手机用户的需求，就不得不考虑对于不支持</span><span>cookie</span><span>的手机的支持。否则，你可能不得不一遍又一遍地对用</span><span> </span><span>户说，我们的网站支持带有</span><span>cookie</span><span>功能的手机，甚至还得对着用户解释半天什么是</span><span>cookie</span><span>。</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>&#160;</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>那么，现在就来看看我们需要为创建不依赖于</span><span>cookie</span><span>的手机端用户登录机制需要做哪些准备。</span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><strong><span style="font-size: 14pt;">一、了解</span></strong><strong><span style="font-size: 14pt;">php</span></strong><strong><span style="font-size: 14pt;">对于</span></strong><strong><span style="font-size: 14pt;">session</span></strong><strong><span style="font-size: 14pt;">机制的支持</span></strong></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>php.ini</span><span>中关于</span><span>session</span><span>的几个有用的字段：</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><strong><span>session.use_trans_sid</span></strong><span>&#160; </span><span>通过开启这个参数，即可启用通过</span><span>url</span><span>参数传递</span><span>sessionId</span><span>的支持。默认值为</span><span>0</span><span>，不开启。</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><strong><span>url_rewriter.tags</span></strong><span><span>&#160; </span></span><span>哪些地方需要用来传递</span><span>sessionId</span><span>。默认值为</span><span>”</span><span>a=href,area=href,frame=src,input=src,form=fakeentry</span><span>”</span><span>，表示在标签</span><span>a=href</span><span>表示对于标签</span><span>a</span><span>的</span><span>href</span><span>属性，要将</span><span>sessionId</span><span>附加上去。</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><strong><span>session.use_cookies</span></strong><span>&#160;&#160;&#160;&#160; </span><span>默认的值是</span><span>“1”</span><span>，代表</span><span>sessionId</span><span>使用</span><span>Cookie</span><span>来传递，反之就是使用</span><span>url</span><span>参数来传递。如果</span><span>session.use_trans_sid=1</span><span>，那么启用该选项，在客户端支持</span><span>cookie</span><span>的情况下，仍然使用</span><span>cookie</span><span>传递</span><span>sessionId</span><span>，在检测到客户端不支持</span><span>cookie</span><span>的情况下，则会使用</span><span>url</span><span>参数传递</span><span>sessionId</span><span>。</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><strong><span>session.name</span></strong><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span>这个就是</span><span>SessionID</span><span>储存的变量名称，默认为</span><span>PHPSESSID</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>session.cookie_lifetime&#160;&#160; </span><span>这个代表</span><span>SessionID</span><span>在客户端</span><span>Cookie</span><span>储存的时间，默认是</span><span>0</span><span>，代表浏览器一关闭</span><span>sessionId</span><span>就作废。</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><strong><span>session.gc_maxlifetime</span></strong><span>&#160;&#160; </span><span>这个是</span><span>Session</span><span>数据在服务器端储存的时间，如果超过这个时间，那么</span><span>Session</span><span>数据就自动删除。</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span>&#160;</span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><strong><span>session.save_path</span></strong><span><span>&#160;&#160; </span>session</span><span>的保存路径。默认为</span><span>/tmp</span><span>。如果在路径前加</span><span>2;</span><span>则表示</span><span>cookie</span><span>的存储深度为</span><span>2</span><span>。比如如果</span><span>session.sava_path=2;/tmp/session</span><span>，那么</span><span>sess_005c685e3ec4e0cf6b667245225299c8</span><span>这个</span><span>session</span><span>就会保存在</span><span>/tmp/session/0/0/</span><span>这个目录下。</span></p>
<p> </p>
<p align="left" style="text-align: left;" class="MsoNormal"><span>&#160;</span></p> <a href="http://hi.baidu.com/comdeng/blog/item/75962afa230d9a14a9d31150.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/75962afa230d9a14a9d31150.html#comment">查看评论</a>]]></description>
        <pubDate>2009-10-04  17:52</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/75962afa230d9a14a9d31150.html</guid>
</item>

<item>
        <title><![CDATA[zend 官方文档中“MVC 异常”的一处错误]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/57b0a97e0a94b1310cd7daa6.html]]></link>
        <description><![CDATA[
		
		在zend framework官方文档中关于 “MVC 异常” 的一段介绍中，存在着一个错误。<br>
<br>
中文版翻译的错误比较明显，也有可能是版本交替后一些方法被剔除的影响（没有查证）。<br>
<a href="http://framework.zend.com/manual/zh/zend.controller.exceptions.html" target="_blank">http://framework.zend.com/manual/zh/zend.controller.exceptions.html</a> 的最后一段代码：<br>
<pre class="programlisting"><code><span style="color: rgb(0, 0, 0);">class&#160;My_Controller_PreDispatchPlugin&#160;extends&#160;Zend_Controller_Plugin_Abstract<br>{<br>&#160;&#160;&#160;&#160;public&#160;function&#160;&#160;&#160;&#160;preDispatch(Zend_Controller_Request_Abstract&#160;$request)<br>&#160;&#160;&#160;&#160;{<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$dispatcher&#160;&#160;&#160;&#160;=<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Zend_Controller_Front::getInstance()-&gt;getDispatcher();<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$controller&#160;&#160;&#160;&#160;=&#160;$dispatcher-&gt;getController($request);  <font color="#ff0000">//</font></span></code><font color="#ff0000"><code><span style="color: rgb(0, 0, 0);">$dispatcher</span></code>并没有</font><code><span style="color: rgb(0, 0, 0);"><font color="#ff0000">getController方法</font><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(!$controller)&#160;{<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$controller&#160;&#160;&#160;&#160;=<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$dispatcher-&gt;getDefaultControllerName($request);<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br><br></span></code></pre>
<br>
但想不到的是，英文版也同样存在错误。<br>
<a href="http://framework.zend.com/manual/en/zend.controller.exceptions.html" target="_blank">http://framework.zend.com/manual/en/zend.controller.exceptions.html</a><br>
最后一段代码：<br>
<br>
<pre class="programlisting"><code><span style="color: rgb(0, 0, 0);">class&#160;My_Controller_PreDispatchPlugin&#160;extends&#160;Zend_Controller_Plugin_Abstract<br>{<br>&#160;&#160;&#160;&#160;public&#160;function&#160;preDispatch(Zend_Controller_Request_Abstract&#160;$request)<br>&#160;&#160;&#160;&#160;{<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$front&#160;&#160;&#160;&#160;&#160;&#160;=&#160;Zend_Controller_Front::getInstance();<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$dispatcher&#160;=&#160;$front-&gt;getDispatcher();<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$class&#160;&#160;&#160;&#160;&#160;&#160;=&#160;$dispatcher-&gt;getControllerClass($request);<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(!<font color="#ff0000">$controller</font>)&#160;{   <font color="#ff0000">// </font></span></code><code><span style="color: rgb(0, 0, 0);"><font><font color="#ff0000">$controller</font></font></span></code><code><span style="color: rgb(0, 0, 0);"><font color="#ff0000">这个变量根本没有定义过，应该是$class才对</font><br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$class&#160;=&#160;$dispatcher-&gt;getDefaultControllerClass($request);<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br></span></code></pre>
<code><span style="color: rgb(0, 0, 0);"><br>
</span></code> <a href="http://hi.baidu.com/comdeng/blog/item/57b0a97e0a94b1310cd7daa6.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%C8%D5%BB%FD%D4%C2%C0%DB">日积月累</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/57b0a97e0a94b1310cd7daa6.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-25  16:54</pubDate>
        <category><![CDATA[日积月累]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/57b0a97e0a94b1310cd7daa6.html</guid>
</item>

<item>
        <title><![CDATA[定期删除smarty缓存目录过期文件]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/f4ed3c1fa95d78c1a6866920.html]]></link>
        <description><![CDATA[
		
		smarty的缓存目录的文件需要定期删除，否则该目录的文件数目将会越来越多，进而影响到文件读取的速度。可以新建一个定期任务，而任务的命令也非常简单（假设smarty的缓存目录是/opt/www/tmp/cache）：<br>
<br>
find /opt/www/tmp/cache -name '*.tpl' -atime +3|xargs /bin/rm -f<br>
<br>
find /opt/www/tmp/cache -name '*.tpl' -atime +3 表示找出/opt/www/tmp/cache目录中以tpl为后缀、最后访问时间在3天之前的文件。然后利用管道命令，将这些文件作为参数，传给命令 /bin/rm -f强制性地删除掉。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%C8%D5%BB%FD%D4%C2%C0%DB">日积月累</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/f4ed3c1fa95d78c1a6866920.html#comment">查看评论</a>]]></description>
        <pubDate>2009-08-11  12:03</pubDate>
        <category><![CDATA[日积月累]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/f4ed3c1fa95d78c1a6866920.html</guid>
</item>

<item>
        <title><![CDATA[delicious的样式表hack方案]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/0b5f07175e89e2084a90a7dd.html]]></link>
        <description><![CDATA[
		
		经常看到有文章讨论css如何针对各种浏览器做hack，最典型的就是如何对ie6和ie7来做了：<br>
#someNode<br>
{<br>
&nbsp;&nbsp;&nbsp;    position: fixed;<br>
&nbsp;&nbsp;    #position: fixed;<br>
&nbsp;&nbsp;    _position: fixed;<br>
&nbsp;&nbsp;    *position:fixed;<br>
}<br>
<br>
<ul>
    <li>第一排给Firefox以及其他浏览器看</li>
    <li>第二排给IE7（可能以后的IE8、IE9也是如此，谁知道呢）看</li>
    <li>第三排给IE6以及更老的版本看</li>
    <li>第四排给ie浏览器看</li>
</ul>
这种方式的特点就是比较简单，只需要稍微增加一个符号即可实现针对不同浏览器的兼容。不过，也还总是有一些不足之处。如果需要对firefox和opera、safari、chrome之类的浏览器做hack，又该如何展开呢？而且，这几个符号如此相似，意义却大不相同，那么一不小心极有可能会有张冠李戴的后果。<br>
<br>
delicious在这方面做了一些很有参考意义的尝试，通过服务器端对userAgent的判断得出浏览器类型，然后限制body的样式，从而可以再样式表中针对body的样式进行特殊浏览器的hack。具体来说，有如下一些步骤：<br>
1、在服务器端通过request headers获知浏览器类型。比如ie6、或者fifefox等。<br>
<br>
2、在页面呈现时给body定义不同的浏览器对应的类型值。比如如果判断客户端是ie6浏览器，则body可以这样定义其样式：<br>
&lt;body class=&quot;is_ie is_ie6&quot;&gt;<br>
<br>
3、对需要进行特殊浏览器实现兼容的样式进行hack。比如一个class=&quot;favorite&quot;的span在ie6里边需要进行hack，可以这样来定义：<br>
<br>
.favorite {}<br>
.is_ie6 .favorite{}<br>
<br>
如果是safari，则可以定义成<br>
.is_safari .favorite{}<br>
<br>
这种方案的好处就是：<br>
1、开发人员进行样式hack的时候，不需要具体记忆各种浏览器的详细hack方式，只需要根据一开始定义好的命名规范来进行即可。<br>
<br>
2、也可以针对任何可能的浏览器做hack，即使这些浏览器本身不提供hack的可能性。 <a href="http://hi.baidu.com/comdeng/blog/item/0b5f07175e89e2084a90a7dd.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/0b5f07175e89e2084a90a7dd.html#comment">查看评论</a>]]></description>
        <pubDate>2009-07-16  11:07</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/0b5f07175e89e2084a90a7dd.html</guid>
</item>

<item>
        <title><![CDATA[不可忽略的缓存header]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/4eb07a27bac9760b918f9da2.html]]></link>
        <description><![CDATA[
		
		在一些局域网环境中，如果是用的代理上网，对于一些需要用户权限认证的页面，没有配置相应的缓存控制header，就有可能因为缓存的问题而产生莫名其妙的串门事件。<br>
<br>
比如：a用户和b用户都注册了同一个网站的会员，a用户登录某个页面page.html后，b用户也接着登陆同一个页面，这个时候，代理没有从 page.html的response header里边找到缓存控制项，就会认为可以直接从缓存里边读取这个页面。这样的话，b用户就看到了a用户登录过的page.html，而这个页面的用 户信息都是与a用户有关的，他就会非常奇怪，这是谁呀？我到哪去了？<br>
<br>
查看rfc的中与<a target="_blank" href="http://tools.ietf.org/html/rfc2616#section-14.9">Cache-Control</a>有关的文档，就可以知道，这种情况需要对Cache-Control这个header项进行一些设置，比如在nginx中这样配置：<br>
add_header Cache-Control &quot;<a href="http://tools.ietf.org/html/rfc2616#section-14.9.1" target="_blank">no-cache</a>, <a href="http://tools.ietf.org/html/rfc2616#section-14.9.2" target="_blank">no-store</a>, <a href="http://tools.ietf.org/html/rfc2616#section-14.9.3" target="_blank">max-age</a>=0, <a href="http://tools.ietf.org/html/rfc2616#section-14.9.4" target="_blank">must-revalidate</a>&quot;;<br>
<br>
而在http1.0协议中，并不存在Cache-Control这个header，要做到向下兼容，需要增加如下的配置项：<br>
add_header <a href="http://tools.ietf.org/html/rfc2616#section-14.32" target="_blank">Pragma</a>: no-cache;<br> <a href="http://hi.baidu.com/comdeng/blog/item/4eb07a27bac9760b918f9da2.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%C8%D5%BB%FD%D4%C2%C0%DB">日积月累</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/4eb07a27bac9760b918f9da2.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-23  10:12</pubDate>
        <category><![CDATA[日积月累]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/4eb07a27bac9760b918f9da2.html</guid>
</item>

<item>
        <title><![CDATA[nginx配置文件的bug？]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/7da25390459f0c85a877a42d.html]]></link>
        <description><![CDATA[
		
		有一些动态图片虽然是用php脚本生成的，但是希望可以在客户端缓存，因此在nginx的配置文件里边增加了一个if语句来控制缓存有关的header。<br>
<br>
# 动态图片部分需要使用缓存<br>
location ~ .*\.php$ {<br>
&nbsp;&nbsp;&nbsp;   if ($request_uri !~ ^/dynamicimg/) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   add_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   Cache-Control &quot;no-cache, no-store, max-age=0, must-revalidate&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   add_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   Pragma  no-cache;<br>
&nbsp;&nbsp;&nbsp;   }<br>
&nbsp;&nbsp;&nbsp;   add_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   Via &quot;1.0 server-ubuntu&quot;;<br>
&nbsp;&nbsp;&nbsp;   ...<br>
}<br>
<br>
原本期望的效果是当请求页面为/dynamicimg/开头的文件时，不输出缓存控制有关的response header，但是对于所有的php请求，都会输出Via这个header，但是最终的结果却和这不同：当请求/dynamicimg/开头的文件时，会输出Via header，而请求其他php页面时，不会输出Via header。<br>
<br>
把add_header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   Via &quot;1.0 server-ubuntu&quot;;放到if语句的前面，效果也还是一样。后来不得不在if范围内增加一条重复的add_header语句，这才达到了最初的目的。<br>
<br>
不知道这是不是nginx配置里边的一个bug。 <a href="http://hi.baidu.com/comdeng/blog/item/7da25390459f0c85a877a42d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/7da25390459f0c85a877a42d.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-22  16:24</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/7da25390459f0c85a877a42d.html</guid>
</item>

<item>
        <title><![CDATA[用php替换禁止外链图片地址时使用preg_match的限制]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/ce727bd9da307c2410df9beb.html]]></link>
        <description><![CDATA[
		
		对于聚合类网站来说，在显示内容中图片的时候，需要解决一个问题：有的网站对图片采取了防盗链的措施，只有当请求头的referer来自指定的host时才会正确显示图片，比如，百度空间的，163空间的。那么，理所当然的，在显示来自这些网站的内容时，需要对图片标签进行一些预处理，使得相应的图片能正确显示出来。<br>
<br>
一般的处理方式，都是利用正则表达式来找到img标签，并对src中的url进行检测，如果是来自这些禁止外链的网站过来的图片，则对src进行一些替换，使得其能正确的显示。比如一个src=&quot;http://hi.baidu.com/aaa.jpg&quot;，替换成src=&quot;http://mydomain.com/downloadPicture.php?http://hi.baidu.com/aaa.jpg&quot;，这样的话，图片的显示就交给http://mydomain.com/downloadPicture.php来处理了。downloadPicture.php先检测对应http://hi.baidu.com/aaa.jpg的图片是否已经下载过，下载过则直接将其显示，否则，通过带有referer=baidu.com等header值的请求下载到正确的图片，然后再将其显示出来。<br>
<br>
之前我们进行图片地址替换时，用到了以下类似的代码：<br>
$READPICURL = '$1http://mydomain.com/downloadPicture.php?$2';<br>
$RegReplaceUrl = '/(&lt;img\s.*?src\s*=\s*[\'&quot;])(.*?(baidu\.com|sina\.com\.cn|qq\.com|sohu\.com|sohu\.com\.cn|tianya\.cn|blog\.163\.com|bababian\.com)\/[^&quot;\']+)/i';<br>
<br>
$newDesc = preg_replace($RegReplaceUrl,$READPICURL,$desc);<br>
if ($newDesc){<br>
$desc = $newDesc;<br>
}<br>
<br>
这段代码一直工作得很正常。最近，随着禁止外链的网站越来越多，我们给$RegReplaceUrl变量又增加了一些domain进去，一切貌似平静。不过，接下来的几天，就陆续收到了一些用户的反馈，说是有一些网站的图片怎么显示不出来了。一看，还果然如此，原来工作得正常的图片替换代码，貌似都不起作用了。<br>
<br>
找了一段文章的内容下来，进行测试，发现代码还真不正常了，$newDesc得到的值总是为null。查了一下官方的文档：<a target="_blank" href="http://cn.php.net/preg_replace">http://cn.php.net/preg_replace</a> ，发现在评论中有这么一段：<br>
<code><span class="html">It may not be obvious to everybody that the function returns NULL if an error of any kind occurres. An error I happen to stumple about quite often was the back-tracking-limit:<br>
<a href="http://de.php.net/manual/de/pcre.configuration.php" rel="nofollow" target="_blank">http://de.php.net/manual/de/pcre.configuration.php</a><br>
#ini.pcre.backtrack-limit<br>
<br>
那么，这段代码出错的原因到底是不需要调整php.ini中正则表达式的相关配置呢？google一阵后，知道原来还有一个<a target="_blank" href="http://cn.php.net/preg_last_error">grep_last_error()</a>函数，可以直接显示使用preg_match时的出错码。于是在后面用grep_last_error()输出一下错误码，发现为2，再对照一下错误码：</span></code><br>
<ul class="simplelist">
    <li class="member"><strong><tt class="constant">PREG_NO_ERROR</tt></strong></li>
    <li class="member"><strong><tt class="constant">PREG_INTERNAL_ERROR</tt></strong></li>
    <li class="member"><strong><tt class="constant">PREG_BACKTRACK_LIMIT_ERROR</tt></strong> (siehe auch <a href="http://cn.php.net/manual/de/pcre.configuration.php#ini.pcre.backtrack-limit" class="link">pcre.backtrack_limit</a>)</li>
    <li class="member"><strong><tt class="constant">PREG_RECURSION_LIMIT_ERROR</tt></strong> (siehe auch <a href="http://cn.php.net/manual/de/pcre.configuration.php#ini.pcre.recursion-limit" class="link">pcre.recursion_limit</a>)</li>
    <li class="member"><strong><tt class="constant">PREG_BAD_UTF8_ERROR</tt></strong></li>
    <li class="member"><strong><tt class="constant">PREG_BAD_UTF8_OFFSET_ERROR</tt></strong> (ab PHP     5.3.0)</li>
</ul>
知道是<strong><tt class="constant">PREG_BACKTRACK_LIMIT_ERROR</tt></strong> 了，看来还真是需要修改php.ini中有关pcre的配置项了。用phpinfo()显示一下配置项，结果如下：<br>
<br>
<strong>PCRE</strong><br>
<table width="600" cellpadding="3" border="0">
    <tbody>
        <tr>
            <td class="e">PCRE (Perl Compatible Regular Expressions) Support</td>
            <td class="v">enabled</td>
        </tr>
        <tr>
            <td class="e">PCRE Library Version</td>
            <td class="v">7.6 2008-01-28</td>
        </tr>
    </tbody>
</table>
<br>
<table width="600" cellpadding="3" border="0">
    <tbody>
        <tr class="h">
            <th>Directive</th>
            <th>Local Value</th>
            <th>Master Value</th>
        </tr>
        <tr>
            <td class="e">pcre.backtrack_limit</td>
            <td class="v">100000</td>
            <td class="v">100000</td>
        </tr>
        <tr>
            <td class="e">pcre.recursion_limit</td>
            <td class="v">100000</td>
            <td class="v">100000</td>
        </tr>
    </tbody>
</table>
<br>
于是尝试性的<strong><font color="#ff0000">在php.ini中调整pcre.backtrack_limit为120000</font></strong>，代码还真就正常工作了。<br>
<br>
不过，这样的更改在我看来，效果还不好，毕竟以后禁止外链的网站会越来越多，那么也就意味着，我们需要随时调整php.ini中的pcre.backtrack_limit值，或者是把pcre.backtrack_limit值设置得很大。经常性地调整显然不是我们想要的，而把pcre.backtrack_limit设置得很大显然对于内存的开销有更大的要求，也更容易带进一些不稳定的因素，影响代码的工作效率。<br>
<br>
那么，就需要从代码本身来考虑，看看怎么着能使backtrack的次数降低。<br>
<br>
首先，肯定是要<font color="#ff0000"><strong>降低正则表达式的复杂程度，减少backtrack的次数</strong></font>。所以，一开始只让正则表达式捕获img的所有标签，然后，再通过正则表达式来检测img标签的src是否有禁止外链的host，从而决定是否替换src。这样做，虽然利用正则表达式的次数由原来的一次增加到1+图片数量，但是，每次要捕获的规则都要降低很多，而且每次调用正则表达式的backtrack次数都是有限的，不会随着其他外在的因素（比如host的增加，内容的增加）而增加得特别明显。<br>
<br>
最后的代码如下：<br>
$RegReplaceUrl = '/(&lt;img\s.*?src\s*=\s*[\'&quot;])([^&quot;\']+)/i';<br>
$newDesc = preg_replace_callback($RegReplaceUrl,'replace',$desc);<br>
<br>
function replace($matches) {<br>
&nbsp;&nbsp;&nbsp;   $pattern = &quot;(baidu\.com|sina\.com\.cn|qq\.com|sohu\.com|sohu\.com\.cn|tianya\.cn|blog\.163\.com|bababian\.com|yeeyan\.com|meijumi\.com)&quot;;<br>
&nbsp;&nbsp;&nbsp;   if (preg_match($pattern, $matches[2])) {<br>
&nbsp;&nbsp;&nbsp;   &nbsp;&nbsp;&nbsp;   return $matches[1].&quot;http://mydomain.com/downloadPicture.php?&quot;.$matches[2];<br>
&nbsp;&nbsp;&nbsp;   } <br>
&nbsp;&nbsp;&nbsp;   return $matches[0];<br>
}<br>
<br>
最后，总结一下，在运用php的正则表达式时，需要注意以下几点：<br>
1、如果代码运行不正常，可以用grep_last_error()函数输出错误码，即可基本了解出错的原因。<br>
2、如果错误码为2（PREG_BACKTRACK_LIMIT_ERROR）或3（PREG_RECURSION_LIMIT_ERROR），简单地话可以通过调整php.ini中pcre.backtrack_limit、pcre.recursion_limit值来大小来解决。<br>
3、对于2中的错误，也可以通过增加正则表达式匹配次数降低表达式的复杂程度，从而减小每次使用表达式是的backtrack（回溯）次数或者recursion（递归）次数。 <a href="http://hi.baidu.com/comdeng/blog/item/ce727bd9da307c2410df9beb.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%BC%BC%CA%F5%D7%B7%B7%E5">技术追峰</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/ce727bd9da307c2410df9beb.html#comment">查看评论</a>]]></description>
        <pubDate>2009-03-18  13:47</pubDate>
        <category><![CDATA[技术追峰]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/ce727bd9da307c2410df9beb.html</guid>
</item>

<item>
        <title><![CDATA[img标签src=&#34;&#34;带来的性能问题]]></title>
        <link><![CDATA[http://hi.baidu.com/comdeng/blog/item/4196fcdd579696e777c63857.html]]></link>
        <description><![CDATA[
		
		有一个页面是这样一种情况，当整个页面加载完了，然后会发出一次异步请求，完成列表数据的载入和显示。不过这几天，明显感觉到列表加载的速度太慢了，老是在页面显示完整了以后好几秒才开始进行异步的请求。通过用firebug分析，发现在页面加载完毕后，在异步请求发出之前，竟然又重复发出了三个对当前页面的请求。也就是说，在列表加载之前，竟然重复加载了当前页面三次。那么，这三次额外的请求是从哪来的呢？<br>
<br>
我把页面代码从最后一部分开始逐步网上删除，看看那三次请求是否依然存在。经过若干次的尝试，最后将问题定位了有三个img标签的地方。其代码都是类似于这样的格式：<br>
&lt;img src=&quot;&quot;/&gt; <br>
按照常理来推测，src表示图片的地址，地址为空就应该不发出任何的图片的请求了，但事实却出乎我们的意料，经过在浏览器下的测试就可以发现问题了。<br>
随便写个html文件，在其中加入&lt;img src=&quot;&quot;/&gt;的代码，用firebug检测，就可以发现，多出了一次对当前页面的请求，如下图：<br>
<div forimg="1"><img border="0" src="http://hiphotos.baidu.com/comdeng/pic/item/f0381a3be4d30dca14cecb4f.jpg" small="0" class="blogimg"></div>
而如果是在ie里边，则会访问当前页面所在的目录，比如，如果当前页面是http://domain.com/test.html，那么就会访问http://domain.com/一次，这是和firefox有所区别的地方。<br>
<br>
事实上，不仅仅是img标签存在上述的问题，其他一些标签也会有类似的表现，详见《<a href="http://hi.baidu.com/bdui/blog/item/9f6ed4af65c349cf7cd92a1f.html" target="_blank">关于img src值为空时,2次请求问题的深入调研</a>》一文。<br>
<br>
对于img标签src=&ldquo;&rdquo;是会自动请求当前页面一次的解决方案实际上也非常简单，只要去掉src属性即可，即写成&lt;img/&gt;的形式。<br>
<br>
把这个问题解决了以后，这个页面大概能提高两三秒的响应速度，使用的感觉就非常流畅了。这也提醒我们，做开发有时候还真不能想当然。<br> <a href="http://hi.baidu.com/comdeng/blog/item/4196fcdd579696e777c63857.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/comdeng/blog/category/%C8%D5%BB%FD%D4%C2%C0%DB">日积月累</a>&nbsp;<a href="http://hi.baidu.com/comdeng/blog/item/4196fcdd579696e777c63857.html#comment">查看评论</a>]]></description>
        <pubDate>2009-03-02  13:22</pubDate>
        <category><![CDATA[日积月累]]></category>
        <author><![CDATA[comdeng]]></author>
		<guid>http://hi.baidu.com/comdeng/blog/item/4196fcdd579696e777c63857.html</guid>
</item>


</channel>
</rss>