<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="Z-Blog性能优化和评论IP显示" id="card1">
<p> 游客</p><p>
标题:Z-Blog性能优化和评论IP显示<br/>
正文:<br/>
　　前些天的一些突发事件，使得我发现了Z-Blog存在的一个很严重的性能问题，就是当单篇文章日访问量数万的时候，会有大量并发用户同时写Access数据库，会导致数据库死锁，之后的外在表现就是CPU占用猛增。　　经过对Z-Blog的代码进行分析，我发现其原因是大并发用户同时写数据库产生的原因。　　我这里想到了一个针对这个问题的解决方案，就是时间缓存，定时写数据库，在一定时间内，数据只写入内存，不写入数据库，当缓存时间到了以后，再把内存的数据写入数据库。这样，即使再大的并发量，也不会再发生数据库死锁的问题了。　　经过初步的代码修改和测试，发现修改完了以后就没有这个问题了。　　修改方法是，打开FUNCTION目录下的c_html_js.asp文件，修改UpdateCountInfo函数为以下代码即可。Function UpdateCountInfo(id) Dim strLastUpdate Dim intArticleCount Dim aryArticleCount Dim objRS Application.Lock strLastUpdate=Application(ZC_BLOG_CLSID&amp;amp;&amp;quot;LAST_UPDATE&amp;quot;) aryArticleCount=Application(ZC_BLOG_CLSID&amp;amp;&amp;quot;CACHE_ARTICLE_VIEWCOUNT&amp;quot;) aryArticleCount(id)=aryArticleCount(id)+1 Application(ZC_BLOG_CLSID&amp;amp;&amp;quot;CACHE_ARTICLE_VIEWCOUNT&amp;quot;)=aryArticleCount Application.UnLock If IsEmpty(strLastUpdate) Or Not IsDate(strLastUpdate) Then  Application.Lock  Application(ZC_BLOG_CLSID&amp;amp;&amp;quot;LAST_UPDATE&amp;quot;) = Now()  strLastUpd<br/><a href="http://www.oodd.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=20&amp;Page=1">[&lt;&lt;]</a><a href="http://www.oodd.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=20&amp;Page=1">[[1]]</a><a href="http://www.oodd.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=20&amp;Page=2">[2]</a><a href="http://www.oodd.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=20&amp;Page=3">[3]</a><a href="http://www.oodd.net/blog/wap.asp?mode=WAP&amp;act=View&amp;id=20&amp;Page=4">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=20">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=20">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://www.oodd.net/blog/wap.asp">首页</a>
</p>
</card>
</wml>