缓存技术

时间:2015-07-08 07:07:59   收藏:0   阅读:109
smarty局部不缓存
{nocache}
{/nocache}
高效率内存缓存
memcached
自己写的缓存
缓存头部
  1. <?php
  2. $ctime=150;
  3. //自动创建cache目录来存放缓存的html文件
  4. $path="cache/";
  5. if(file_exists($path)){
  6. }else{
  7. mkdir($path,0777,true);
  8. }
  9. $fileinfo=$_SERVER[‘REQUEST_URI‘];
  10. //$fn= pathinfo($fileinfo,PATHINFO_FILENAME);//输出myc
  11. //echo $fn.‘<br>‘;
  12. $cy= md5($fileinfo);//使html的前缀用md5的加密方式
  13. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] : 1;
  14. $id=isset($_GET[‘id‘]) ? $_GET[‘id‘] :1;
  15. $cf=$path.$cy.$currpage.‘_‘.$id.‘.html‘;
  16. ob_start();
  17. // echo filemtime($cf);
  18. // echo ‘<br>‘;
  19. // echo time()-filemtime($cf);//判断缓存时间差
  20. //判断缓存时间是否失效
  21. if(file_exists($cf) && (time()-filemtime($cf))<$ctime){
  22. include $cf;
  23. exit;
  24. }
  25. ?>
缓存结尾
  1. <?php
  2. $html=ob_get_contents();
  3. file_put_contents($cf, $html);
  4. ?>
缓存案例
  1. <?php
  2. $ctime=150;
  3. //自动创建cache目录来存放缓存的html文件
  4. $path="cache/";
  5. if(file_exists($path)){
  6. }else{
  7. mkdir($path,0777,true);
  8. }
  9. $fileinfo=$_SERVER[‘REQUEST_URI‘];
  10. // // $fn= pathinfo($fileinfo,PATHINFO_FILENAME);//输出myc
  11. // echo $fn.‘<br>‘;
  12. $cy= md5($fileinfo);//使html的前缀用md5的加密方式
  13. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] : 1;
  14. $id=isset($_GET[‘id‘]) ? $_GET[‘id‘] :1;
  15. $cf=$path.$cy.$currpage.‘_‘.$id.‘.html‘;
  16. ob_start();
  17. // echo filemtime($cf);
  18. // echo ‘<br>‘;
  19. // echo time()-filemtime($cf);//判断缓存时间差
  20. //判断缓存时间是否失效
  21. if(file_exists($cf) && (time()-filemtime($cf))<$ctime){
  22. include $cf;
  23. exit;
  24. }
  25. require_once ‘inc/libs/Smarty.class.php‘;
  26. include ‘inc/Db.class.php‘;
  27. $db=new Db();
  28. $s=new Smarty();
  29. // echo $s::SMARTY_VERSION;
  30. // echo smarty::SMARTY_VERSION;//输出版本号
  31. $s->debugging=false;//关闭调试
  32. $s->caching=false;//关闭缓存
  33. $s->setTemplateDir(‘inc/html/‘);//设置模板文件路径
  34. $s->setCacheDir(‘inc/cache/‘);//如果开启了缓存,设定缓存目录
  35. $s->setCompileDir(‘inc/compile/‘);//设定模板编译后的路径
  36. $f=isset($_GET[‘i‘]) ? $_GET[‘i‘] : ‘index‘;
  37. switch ($f){
  38. case ‘teacher‘;
  39. // $trs=$db->query(‘teacher‘,‘*‘,"flag=‘y‘",‘order by sort desc‘);
  40. // $db->css1();
  41. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] :1;
  42. $trs=$db->pager(‘teacher‘,$currpage,‘*‘,2,"flag=‘y‘",‘order by sort desc‘,‘i=teacher&‘);
  43. $s->assign(‘trs‘,$trs);
  44. $s->assign(‘page‘,$trs[1]);
  45. break;
  46. case ‘jy‘;
  47. // $db->css1();
  48. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] :1;
  49. $srs=$db->pager(‘job‘,$currpage,‘*‘,6,‘1=1‘,‘order by id desc‘,‘i=jy&‘);
  50. $s->assign(‘srs‘,$srs);
  51. $s->assign(‘page‘,$srs[1]);
  52. break;
  53. case ‘newsarticle‘;
  54. $id=$_GET[‘nid‘];
  55. $db->updatenum(‘news‘,‘num=num+1‘,‘id=‘.$id);
  56. $new=$db->query(‘news‘,‘*‘,‘id=‘.$id,‘order by id desc‘);
  57. $s->assign(‘new‘,$new);
  58. break;
  59. case ‘news‘;
  60. // $db->css1();
  61. $cn=$_GET[‘cname‘];
  62. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] :1;
  63. $nn=$db->pager(‘news‘,$currpage,‘*‘,10,"flag=‘y‘ and cname=‘$cn‘",‘order by id desc‘,‘i=news&cname=‘.$cn.‘&‘);
  64. $s->assign(‘nn‘,$nn);
  65. default:
  66. $trs=$db->query(‘teacher‘,‘*‘,‘1=1‘,‘order by sort desc‘,‘limit 2‘);
  67. $s->assign(‘trs‘,$trs);
  68. $zx=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘网络营销资讯‘",‘order by id desc‘,‘limit 7‘);
  69. $s->assign(‘zx‘,$zx);
  70. $zs=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘网络营销知识‘",‘order by id desc‘,‘limit 7‘);
  71. $s->assign(‘zs‘,$zs);
  72. $zjy=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘最新就业信息‘",‘order by id desc‘,‘limit 7‘);
  73. $s->assign(‘zjy‘,$zjy);
  74. break;
  75. $zxk=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘网络营销课程‘",‘order by id desc‘,‘limit 7‘);
  76. $s->assign(‘zxk‘,$zxk);
  77. break;
  78. }
  79. $zjy=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘最新就业信息‘",‘order by id desc‘,‘limit 7‘);
  80. $s->assign(‘zjy‘,$zjy);
  81. $s->assign(‘zxy‘,urlencode(‘最新就业信息‘));//解决ie里面的乱码问题
  82. $s->assign(‘zxs‘,urlencode(‘网络营销资讯‘));
  83. $s->assign(‘zss‘,urlencode(‘网络营销知识‘));
  84. $s->assign(‘zsy‘,urlencode(‘网络营销课程‘));
  85. $s->display($f.‘.html‘);
  86. $html=ob_get_contents();
  87. file_put_contents($cf, $html);
使用smarty配合缓存技术
  1. <?php
  2. require_once ‘inc/libs/Smarty.class.php‘;
  3. $s=new Smarty();
  4. // echo $s::SMARTY_VERSION;
  5. // echo smarty::SMARTY_VERSION;//输出版本号
  6. $s->debugging=false;//关闭调试
  7. $s->caching=true;//关闭缓存
  8. $s->cache_lifetime=3600;//设定缓存时间
  9. $s->setTemplateDir(‘inc/html/‘);//设置模板文件路径
  10. $s->setCacheDir(‘inc/cache/‘);//如果开启了缓存,设定缓存目录
  11. $s->setCompileDir(‘inc/compile/‘);//设定模板编译后的路径
  12. $s->setConfigDir(‘inc/config/‘);//设定smarty配置文件的目录
  13. $f=isset($_GET[‘i‘]) ? $_GET[‘i‘] : ‘index‘;
  14. // $s->clearAllCache();
  15. if($s->isCached($f.‘.html‘)){
  16. $s->display($f.‘.html‘);
  17. exit;
  18. }
  19. include ‘inc/Db.class.php‘;
  20. $db=new Db();
  21. switch ($f){
  22. case ‘teacher‘;
  23. // $trs=$db->query(‘teacher‘,‘*‘,"flag=‘y‘",‘order by sort desc‘);
  24. // $db->css1();//这样引入会打乱页面
  25. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] :1;
  26. $trs=$db->pager(‘teacher‘,$currpage,‘*‘,2,"flag=‘y‘",‘order by sort desc‘,‘i=teacher&‘);
  27. $s->assign(‘trs‘,$trs);
  28. $s->assign(‘page‘,$trs[1]);
  29. break;
  30. case ‘jy‘;
  31. // $db->css1();
  32. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] :1;
  33. $srs=$db->pager(‘job‘,$currpage,‘*‘,6,‘1=1‘,‘order by id desc‘,‘i=jy&‘);
  34. $s->assign(‘srs‘,$srs);
  35. $s->assign(‘page‘,$srs[1]);
  36. break;
  37. case ‘newsarticle‘;
  38. $id=$_GET[‘nid‘];
  39. $db->updatenum(‘news‘,‘num=num+1‘,‘id=‘.$id);
  40. $new=$db->query(‘news‘,‘*‘,‘id=‘.$id,‘order by id desc‘);
  41. $s->assign(‘new‘,$new);
  42. break;
  43. case ‘news‘;
  44. // $db->css1();
  45. $cn=$_GET[‘cname‘];
  46. $currpage=isset($_GET[‘p‘]) ? $_GET[‘p‘] :1;
  47. $nn=$db->pager(‘news‘,$currpage,‘*‘,10,"flag=‘y‘ and cname=‘$cn‘",‘order by id desc‘,‘i=news&cname=‘.$cn.‘&‘);
  48. $s->assign(‘nn‘,$nn);
  49. default:
  50. $trs=$db->query(‘teacher‘,‘*‘,‘1=1‘,‘order by sort desc‘,‘limit 2‘);
  51. $s->assign(‘trs‘,$trs);
  52. $zx=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘网络营销资讯‘",‘order by id desc‘,‘limit 7‘);
  53. $s->assign(‘zx‘,$zx);
  54. $zs=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘网络营销知识‘",‘order by id desc‘,‘limit 7‘);
  55. $s->assign(‘zs‘,$zs);
  56. $zjy=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘最新就业信息‘",‘order by id desc‘,‘limit 7‘);
  57. $s->assign(‘zjy‘,$zjy);
  58. break;
  59. $zxk=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘网络营销课程‘",‘order by id desc‘,‘limit 7‘);
  60. $s->assign(‘zxk‘,$zxk);
  61. break;
  62. }
  63. $zjy=$db->query(‘news‘,‘*‘,"flag=‘y‘ and cname=‘最新就业信息‘",‘order by id desc‘,‘limit 7‘);
  64. $s->assign(‘zjy‘,$zjy);
  65. $s->assign(‘zxy‘,urlencode(‘最新就业信息‘));//解决ie里面的乱码问题
  66. $s->assign(‘zxs‘,urlencode(‘网络营销资讯‘));
  67. $s->assign(‘zss‘,urlencode(‘网络营销知识‘));
  68. $s->assign(‘zsy‘,urlencode(‘网络营销课程‘));
  69. $s->display($f.‘.html‘);
首先开启缓存
$s->caching=true;//关闭缓存 
 $s->clearAllCache();清除缓存目录
如果加入如下的此段代码,则页面中不能出现局部缓存{nocache},局部不缓存,立即修改的文件会立即显示
// if($s->isCached($f.‘.html‘)){
//     $s->display($f.‘.html‘);
//    exit;
// }     
把如下的引入文件放到exit;后面
include ‘inc/Db.class.php‘;
$db=new Db();     
smarty局部不缓存{nocache}
包含的局部缓存一定要在{foreach}外面,如果在里面$v肯定没有效果可以让局部缓存的部分不用{foreach}
刷新显示新的时间和数据
  1. {nocache}
  2. <h1>{date(‘Y-m-d H:i:s‘)}</h1>
  3. {/nocache}
{insert} {/insert}里面包含的文件都不能进行缓存
文本文件,软件配置文件的格式有
.ini
.xml
.conf
a


来自为知笔记(Wiz)


评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!