php专区

 首页 > php专区 > PHP高级 > 缓存异常处理 > PHP缓存技术

PHP缓存技术

分享到:
【字体:
导读:
         摘要:WEB程序获取信息的方式主要是查询数据库,当数据库不是很大的情况下不会有太大的问题.然而,随着网站的发展,数据库呈几何级数的方式增长的时候,就会出现瓶颈.于是PHP缓存技术诞生了...

PHP缓存技术
WEB程序获取信息的方式主要是查询数据库,当数据库不是很大的情况下不会有太大的问题.然而,随着网站的发展,数据库呈几何级数的方式增长的时候,就会出现瓶颈.于是PHP缓存技术诞生了.PHP缓存技术工作时,当程序查询数据的时候,会把相应的结果序列化后保存到文件中,以后同样的查询语句就可以不用直接查询数据库,而是从缓存文件中获得。这一改进使得程序运行速度得以太幅度提升.
  目前应用PHP缓存技术比较流行的方法主要是Adodb+Smarty这样的黄金搭档.
  PHP缓存技术工作原理:
  首先看看adodb提供的数据缓存功能:
  1   2include('adodb.inc.php'); # load code common to ADOdb 
  3$ADODB_CACHE_DIR = '/usr/ADODB_cache'; 
  4$conn = &ADONewConnection('mysql'); # create a connection 
  5$conn->PConnect(' http://www.aboutstudy.net ','userid','','agora');# connect to MySQL, agora db 
  6$sql = 'select CustomerName, CustomerID from customers'; 
  7$rs = $conn->CacheExecute(15,$sql); 
  8?> 如上,每次查询数据的时候,会把相应的结果序列化后保存到文件中,以后同样的查询语句就可以不用直接查询数据库,而是从缓存文件中获得。 
  再来看看Smarty提供的页面缓存功能:
  1   2require('Smarty.class.php'); 
  3$smarty = new Smarty; 
  4$smarty->caching = true; 
  5if(!$smarty->is_cached('index.tpl')) { 
  6 // No cache available, do variable assignments here. 
  7 $contents = get_database_contents(); 
  8 $smarty->assign($contents); 
  9} 
  10$smarty->display('index.tpl'); 
  11?> 
  12
  如上,每次访问页面的时候,都会先检测相应的缓存是否存在,如果不存在,就连接数据库,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次访问的时候缓存文件就发挥作用了,而不会再执行if块的数据查询语句了。当然,在实际使用中会有很多东西要考虑,比如,有效期的设置,缓存组的设置等等,具体可以查看Smarty手册中有关缓存(caching)的相关章节。 
  以上两个PHP流行组件缓存方式的侧重点是不同的,对于Adodb的缓存而言,它缓存的是数据,对于Smarty的缓存而言,它缓存的是页面。其他提供缓存功能的组件还有很多(如:PEAR::Cache_Lite等等),实际编程中使用哪个方案要具体情况具体分析,也可能会综合使用。 
  使用这些组件内置的缓存方案有一个很明显的好处是它们的实现对客户端而言都很透明。只要进行必要的设置(如:缓存时间,缓存目录等等)就可以了,而不用过多考虑实现缓存的细节问题,系统会根据设置自动管理缓存。但是其缺点也同样明显,因为每次请求仍然要用PHP解析一遍,效率和纯静态相比还是大打折扣,在大的PV面前还是不能满足要求,在这种情况下,仅仅做动态缓存就不够了,必须实现静态缓存。
  PHP,一门最近几年兴起的web设计脚本语言,由于它的强大和可伸缩性,近几年来得到长足的发展,php相比传统的asp网站,在速度上有绝对的优势,想mssql转6万条数据php如需要40秒,asp不下2分钟.但是,由于网站的数据越来越多,我们渴求能更快速的调用数据,不必要每次都从数据库掉,我们可以从其他的地方,比方一个文件,或者某个内存地址,这就是php的缓存技术,也就是Cache技术. PHP缓存技术
分享到:
49点提高PHP编程效率,引入缓存机制提升性...
49点提高PHP编程效率,引入缓存机制提升性能 1.用单引号代替双引号来包含字符串,这样做会更快一些。因为会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“”(译注:PHP手册中说echo是结构,不是真正的函数,故把函数加上了双引号)。 2.如果能将类的方...
PHP禁止缓存方法
PHP禁止缓存方法 PHP禁止缓存方法:  1.header("Expires:Mon,26Jul199705:00:00GMT"); 2.header("Cache-Control:no-cache,must-revalidate"); 3.header("Pragma:no-cache"); 或者在调用的程序地之后边加个随机参数 PHP禁止缓存方法
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……