如果做企业站,ASP+Access是一个最佳选择。但是如果Access的数据库达到G级别,那么性能可能就会大大的下降。如果数据库没有优化,打开asp页面几秒是常有的事情。如果一个Access表内几十万条数据,恰巧ASP页面又有几十个查询,可能就悲剧了。网站打开时间要按分钟计算了。
Asp+Access以前数据量少的时候,没有任何问题。数据量一大,各种麻烦的问题就多了起来。总不能让客户等几分钟打开首页把。 继续阅读
如果做企业站,ASP+Access是一个最佳选择。但是如果Access的数据库达到G级别,那么性能可能就会大大的下降。如果数据库没有优化,打开asp页面几秒是常有的事情。如果一个Access表内几十万条数据,恰巧ASP页面又有几十个查询,可能就悲剧了。网站打开时间要按分钟计算了。
Asp+Access以前数据量少的时候,没有任何问题。数据量一大,各种麻烦的问题就多了起来。总不能让客户等几分钟打开首页把。 继续阅读
本文只提供思路,程序代码在此就不方便发布了~
第一:每个程序代码都不样
第二:不能随便公布客户的代码~呵呵
如有类似需求,可联系QQ:1301425789
可以看到现在首页的执行时间已经是1.8秒以上了,如果访问量太大,有可能就会导致耗资源,加入缓存是最好的解决方法。我设置的数据库表如下:
Cache_id
|
Cache_key
|
Cache_Content
|
Cache_LastCreate
|
自动编号
|
缓存关键字
|
缓存内容
|
最后生成日期
|
1) 不经常改动部分缓存数据同步
保持缓存同步有两种方法:设置缓存刷新频率、实时更新
设置缓存刷新频率
2) (经常改动不废)非静态的部分
这个比较简单,主要是会员登录,ASP脚本判断状态,输出JS更改页面的动态部分
phpCache,现在更新到了0.11。
2010-1-31 Vesion 0.11
修复了每次读取字符不能超过128KB的限制
去除了nocahce模式存储的文件的功能
增加了读取失败的错误提示符
有需要的朋友请到http://www.catseven.cn/phpCache/下载。
< ?php /* CatSeven phpCache Vesion 0.11 ======CopyRight====== Home:http://www.catseven.cn/phpCache/ Design:Miao Qiyuan[miaoqiyuan.cn] */ class cache404{ public $K,$P,$V; public function __construct($URI,$P='blog',$Par='./404cache/'){ $this->U = $URI; $this->K = md5($URI); $this->P = $P; $this->Par = $Par; $this->E = '.tmp_miaoqiyuan'; $this->F = $this->Par . $this->P . '/' . $this->K . $this->E; $this->V = 'CatSeven phpCache Error.'; } public function getHtml($u){ return file_get_contents($u,NULL,NULL,-1,1000000); } public function getCache(){ if(!!($fp=@fopen($this->F,'r'))){ $html=fread($fp,102400); }else{ if($html=$this->getHtml($this->U)){ $this->addIndex(); $fp=fopen($this->F,'w'); fwrite($fp,$html); }else{ $html=$this->V; } } if($fp)fclose($fp); return $html; } public function noCache(){ if(!$html=$this->getHtml($this->U))$html=$this->V; return $html; } public function flushCache(){ unlink($this->F); } public function addIndex(){ $fpidx=fopen($this->Par . $this->P . '.rtf','a'); fwrite($fpidx,$this->K . ' ' . $this->U . "\n"); fclose($fpidx); } } ?>
前几天写过一篇巧用404.php解决Wordpress耗资源的问题,给Wordpress加个缓存功能(http://www.miaoqiyuan.cn/p/wordpress-haoziyuan-wordpress-cache)中提到了PHP缓存的方法,总感觉不是很方便,现在我又写了一个新的。
< ?php class cache404{ public $K,$P; public function __construct($URI,$P='blog',$Par='./cache/'){ $this->U = $URI; $this->K = md5($URI); $this->P = $P; $this->Par = $Par; $this->E = '.tmp_miaoqiyuan'; $this->F = $this->Par . $this->P . '/' . $this->K . $this->E; } public function getCache(){ if(!!($fp=@fopen($this->F,'r'))){ $html=fread($fp,102400); }else{ $html=file_get_contents($this->U); $this->addIndex(); $fp=fopen($this->F,'w'); fwrite($fp,$html); } fclose($fp); return $html; } public function noCache(){ $html=file_get_contents($this->U); $fp=fopen($this->F,'w'); fwrite($fp,$html); fclose($fp); return $html; } public function flushCache(){ unlink($this->F); } public function addIndex(){ $fpidx=fopen($this->Par . $this->P . '.rtf','a'); fwrite($fpidx,$this->K . ' ' .$this->U); fclose($fpidx); } } ?>
用的时候很简单
require_once('./inc/404cache.php'); $Cache=new cache404($URI,$Path); #echo $Cache->noCache(); echo $Cache->getCache();
< ?php require_once('./inc/404cache.php'); $q=explode("/",$URI=substr(($qs = strtolower($_SERVER['QUERY_STRING'])),strpos($qs, ':80')+4)); $URI="/".$URI; switch($q[0]){ case 'test': #/test -> /seo_test/test.asp if(preg_match('/^\/test(\/)?$/',$URI)){ $URI='http:'.'//'.$_SERVER['SERVER_NAME'].'/seo_test/test.asp'; } #/test/[a-z]\.html -> /seo_test/test.asp?key=$1 else if(preg_match('/^\/test\/([a-z])\.html$/',$URI,$Match)){ $URI='http:'.'//'.$_SERVER['SERVER_NAME'].'/seo_test/test.asp?key='.$Match[1]; }else{ $URI='http:'.'//'.$_SERVER['SERVER_NAME'].'/seo_test/test.asp'; } $Path='test'; default: $URI='http:'.'//'.$_SERVER['SERVER_NAME'].'/index.php'.$URI; $Path='blog'; } $Cache=new cache404($URI,$Path); #echo $Cache->getCache(); echo $Cache->noCache(); ?>
刚开始搭建博客的时候,看中了wordpress的功能强大,经过两年的不懈努力,我的小博已经从pr0到pr4(最近降到pr3),有的时候每日pv竟然能到3万,这时idc那边就提醒我好资源了。自己购买了台西数的VPS,配置好后,cpu也是居高不下,首页竟然要4秒钟才能打开。当时考虑到seo,路径使用了http://www.miaoqiyuan.cn/p/wordpress-plus-chc(注意,不是文件夹)的模式,生成静态,路径就变了http://www.miaoqiyuan.cn/p/wordpress-plus-chc/。第一,我不想耗资源,第二,我不想改变路径。
我博客的现在的路径是怎样实现的呢?这个问题请看我以前的一篇文章WordPress无Rewrite用cos-html-cache实现静态化(http://www.miaoqiyuan.cn/p/wordpress-plus-chc)。既然一切皆由404.php起,那么现在就从404.php找切入点,比如在404.php上加个缓存。声明:本文由苗启源发表在他的博客,一切思想皆为苗启源原创,转帖请注明出处。
这个换成怎样加呢?改动源程序也不现实,而且文件太多,太麻烦。这时我想到了前几天写的一篇文章Python 之 XML与文本操作(http://www.miaoqiyuan.cn/p/python-xml-file),在那篇文章中,也是使用了缓存,比如请求http://www.miaoqiyuan.cn/products/,因为没有用到数据库,把请求过的网址记录到一个文本文件,少了还好说,多了就。。。最好的办吧就是把每个URL地址返回的内容保存到MD5(URL)的文件中,如果读取的时候该文件存在,说明已经读取过了,有缓存。python源码请见Python 之 XML与文本操作(http://www.miaoqiyuan.cn/p/python-xml-file)。
这样就好办了,直接按以前说的那种方法。404.php返回的请求路径,我没给md5下,如果存在,就直接读取,不存在,执行程序,然后保存到缓存文件中。下面给出404.php的代码,如果觉得本文对您有所帮助,请Ctrl+D收藏我的博客地址,我最近准备写一个php的缓存类哦。
< ?php $qs = $_SERVER['QUERY_STRING']; $_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ':80')+3); $CacheStr = md5($_SERVER['REQUEST_URI']); if(!$fp=@fopen("./404cache/".$CacheStr.".tmp","r")){ $getHtml=file_get_contents("http://www.miaoqiyuan.cn/index.php".$_SERVER['REQUEST_URI']); $fp=fopen("./404cache/".$CacheStr.".tmp","w"); fwrite($fp,$getHtml); echo $getHtml; } echo fread($fp,1100000); ?>
基本功能都实现了。不过更新是个问题,还有缓存数据,我会分别用Mysql数据库,XML文件,文本文件分别存取,关于速率我还要进一步进行测试。文本文件的存储缓存的一个致命的缺点就是最后更新时间,缓存的有效时间不好控制。如果用xml或数据库,这个问题就简单了。好了,现在时间太晚了,就此结笔(键盘)。