缓存技术

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)

时间: 2024-08-19 05:12:25

缓存技术的相关文章

分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)

上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下redis的一些高级特性. 回到顶部 安全性设置 设置客户端操作秘密 redis安装好后,默认情况下登陆客户端和使用命令操作时不需要密码的.某些情况下,为了安全起见,我们可以设置在客户端连接后进行任何操作之前都要进行密码验证.修改redis.conf进行配置. [[email protected] ~]# vi /usr/local/redis/etc/redis.conf ###

分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装

redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssdb,mongodb等.既可以把redis理解为理解为缓存技术,因为它的数据都是缓存在内从中的:也可以理解为数据库,因为redis可以周期性的将数据写入磁盘或者把操作追加到记录文件中.而我个人更倾向理解为缓存技术,因为当今互联网应用业务复杂.高并发.大数据的特性,正是各种缓存技术引入最终目的. 关于r

如何正确使用缓存技术

缓存技术是用来提升程序运行性能的常见手段,如你所见, 阿里巴巴.新浪微博.美团网等互联网龙头企业都是用缓存技术来提升自己家网站的性能.然而,任何事物都有两面性, 缓存技术使用得当带来的好处自然不言而喻, 但是如果使用不当, 产生的副作用也够让人喝一壶的. 我们写服务器程序时,使用缓存的目的无非就是减少数据库访问次数降低数据库的压力和提升程序的响应时间, 然而根据具体的使用场景又可以派生出无数种情况, 比如说 程序频繁读取数据库, 但是查询获得的结果却总是相同的,这部分相同的结果是不是可以放入缓存

Redis缓存技术学习系列之邂逅Redis

??作为一个反主流的开发者,在某种程度上,我对传统关系型数据库一直有点"讨厌",因为关系型数据库实际上和面向对象思想是完全冲突的,前者建立在数学集合理论的基础上,而后者则是建立在软件工程基本原则的基础上.虽然传统的ORM.序列化/反序列化在一定程度上解决了这种冲突,但是软件开发中关于使用原生SQL语句还是使用ORM框架的争论从来没有停止过.可是实际的业务背景中,是完全无法脱离数据库的,除非在某些特定的场合下,考虑到信息安全因素而禁止开发者使用数据库,在主流技术中数据库是一个非常重要的组

(转)java缓存技术,记录

http://blog.csdn.net/madun/article/details/8569860 最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/articles/cache-static-files-with-jnotify-and-ehcache 介绍 JNotify:http://jnotify.sourceforge.net/,通过JNI

硬盘缓存技术DiskLruCache技术&lt;笔记&gt;

防止多图OOM的核心解决思路就是使用LruCache技术,但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次,这显然非常耗时.因此Google又提供了一套硬盘缓存的解决方案:DiskLruCache(非Google官方编写,但获得官方认证).一般来说新闻类App从网络获取到数据后都会存入到本地缓存中,因此即使手机在没有网络的情况下依然能够加载出以前浏览过的新闻.使用的缓存技术自然是DiskLruCache.以网易新闻为例,它的Andro

PHP 缓存技术

PHP缓存包括PHP编译缓存和PHP数据缓存两种. PHP是一种解释型语言,属于边编译边运行的那种.这种运行模式的优点是程序修改很方便,但是运行效率却很低下. PHP编译缓存针对这种情况做改进处理,使得PHP语言只要运行一次,就可以把程序的编译结果缓存起来. PHP编译缓存: 目前最常见的PHP编译缓存工具有:APC,Accelerator,xcache(国产)等. PHP是一种解释型语言,在PHP语言执行代码的时候,需要下面两步: 1.编译过程.PHP读取文件,并编译该文件,然后生成能够在Ze

ASP.NET 缓存技术分析

缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓 存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大大提供应用程序的性能.毕竟现在内存非常便宜,用空间换取时间效率应该是非常划算的.尤 其是对耗时比较长的.需要建立网络链接的数据库查询操作等. 对于web页面的缓存,WebForm与ASP.NET MVC有不同的语法.在WebForm中, <%@ OutputCache Duration="6

PHP缓存技术

全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程.此种方式,在CMS系统中比较常见,比如dedecms:一种比较常用的实现方式是用输出缓存:Ob1.全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程.此种方式,在CMS系统中比较常见,比如dedecms:一种比较常用的实现方式是用输出缓存:Ob_start()******要运行的代码*******$content

强大的Spring缓存技术(上)

缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 cache 配置方法,展现了 spring cache 的强大之处,然后介绍了其基本的原理,扩展点和使用场景的限制.通过阅读本文,你应该可以短时间内掌握 spring 带来的强大缓存技术,在很少的配置下即可给既有代码提供缓存能力. 概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)