返回列表 发帖

PHP 动态网站变 静态缓存 加快网站访问速度,PHP页生成静态缓存页面。

今天在找程序时,找到这个。PHP生成静态缓存,很简单的一个程序。

此程序原理好像第一次访问时PHP程序先自己读一次网页生成缓存,
再供访问者读取网页,下次访问时直接读缓存页不再执行PHP其它代码。

对于我的一些垃圾程序,非常好。



收集一下以备需要,以下摘录:

有些php网站由于前期设计以及其它原因
网站是纯动态或者是大部分是动态的,对数据库的操作很频繁.
造成网站访问速度很慢!想实现静态,又没有生成静态功能.
因为我写了一个精简的生成静态的程序.很简单,一看就懂
适合基本上所有系统

要求
1.系统支持php
2.支持file_get_contents file_put_contents [也可以用同样作用的函数替换]
3.最好支持gzcompress





把以下代码保存在 文件  cache.php 中。

缓存插件,这样使用即可:  include("cache.php");    放在PHP文件头前   

需要先建立一个 cache 目录,并可写。会生成 txt文件



  1. <?php
  2. if($_GET['phphuancun']!="true"){
  3. define("HC_PATH",dirname(__FILE__)."/data/cache/");
  4. define("HC_TIME",1);
  5. echo HC_getcache();exit;
  6. }
  7. function HC_getcache($iscache='')
  8. {
  9. $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  10. $cacheurl=strpos($url,"?")?$url."&phphuancun=true":$url."?phphuancun=true";
  11. $cachename=HC_PATH.md5($url).".c";
  12. $cachetime=$iscache?time()+1:time()-(HC_TIME * 60*60);
  13. if(file_exists($cachename) && filemtime($cachename)>=$cachetime){
  14.   $return=file_get_contents($cachename);$data=function_exists(gzcompress)?@gzuncompress($return):$return;
  15.   return unserialize($data);
  16. }else{$return=file_get_contents($cacheurl);HC_writecache($cachename,$return);return $return;}
  17. }
  18. function HC_writecache($name,$array)
  19. {
  20. function_exists(gzcompress)?$return =gzcompress(serialize($array)):$return=serialize($array);
  21. @file_put_contents($name,$return);
  22. }
  23. ?>
复制代码



注:缓存文件不会自动删除,也无时效性。  或删除缓存目录里的文件。
     带上参数:?phphuancun=true  即可查看PHP程序未缓存状态。


注:原代码是: $url="http://".$_SERVER['SERVER_NAME']
                     现把他换成 $url="$_SERVER['HTTP_HOST']  
                     才能在我的nginx环境下获取正确主机地址。

收集地址:  http://www.oschina.net/code/snippet_202258_19030



缺点
1.使用本系统不能实时更新内容 必须清空缓存后才能更新或者是到了设定的缓存时间才会更新
2.第一次访问速度比较慢,因为没有缓存.第二次就是调用缓存文件,那时候就快了
3.缓存文件占磁盘空间,建议服务器或者空间比较大的使用.或者定期删除缓存文件
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
★ 11月开空间新规则,百度GG收录百贴:http://idc866.com/thread-15155-1-1.html
★ 本站转型:推荐免费空间,收集免费空间,免费空间测试,并提供原创申请教程。
★ 免备案空间,免费空间,免费国外空间,国外免费空间,免费美国空间
★ 我们是一群辛勤的小站站长,我们需要团结,我们需要共同进步!!!!
★ 达要求开空间,论坛发申请贴后,请加QQ:876812422  (一般在线、有Q必回)

返回列表