php缓存:PHP缓存技术



    为什么要使用缓存Cache技术?理由很简单:提高效率开发中获取信息方式主要是查询数据库除此以外也可能是通过Web Services或者别某种思路方法无论哪种思路方法在大量并发访问面前它们都可能成为效率瓶颈为了解决这些问题人们提出了很多解决方案其中些是利用优化软件Software(如:APCEacceleratorZend Optimizer等等)来提高运行效率合理运用这些软件Software往往能使运行效率得到数量级上提升但前提是你必须拥主机控制权以便能够安装这些软件Software如果你使用是虚拟主机那么只能祈祷你服务提供商已经预装了某个优化软件Software否则就必须自己使用PHP来实现相应缓存Cache功能如果这让你感到无所适从相信下面文字能给你些启发
    很多PHP员都使用Adodb+Smarty这样黄金搭档那么就先看看如何使用它们缓存Cache功能
首先看看adodb提供数据缓存Cache功能:
<?php
(’adodb.inc.php’); # load code common to ADOdb 
$ADODB_CACHE_DIR = ’/usr/ADODB_cache’; 
$conn = &ADONewConnection(’mysql’);  # create a connection 
$conn->PConnect(’localhost’,’userid’,’’,’agora’);# connect to MySQL, agora db 
$sql = ’select CustomerName, CustomerID from customers’; 
$rs = $conn->CacheExecute(15,$sql); 
?>
 
    如上每次查询数据时候会把相应结果序列化后保存到文件中以后同样查询语句就可以不用直接查询数据库而是从缓存Cache文件中获得
再来看看Smarty提供页面缓存Cache功能:
<?php
require(’Smarty..php’);
$smarty =  Smarty;

$smarty->caching = true;

(!$smarty->is_cached(’index.tpl’)) {
    // No cache available, do variable assignments here.
    $contents = get_database_contents;
    $smarty->assign($contents);
}

$smarty->display(’index.tpl’);
?>
 
     如上每次访问页面时候都会先检测相应缓存Cache是否存在如果不存在就连接数据库得到数据完成模板变量赋值显示页面同时生成缓存Cache文件这样下次访问时候缓存Cache文件就发挥作用了而不会再执行数据查询语句了当然在实际使用中会有很多东西要考虑比如有效期设置缓存Cache组设置等等具体可以查看Smarty手册中有关缓存Cache(caching)相关章节
    以上两个PHP流行组件缓存Cache方式侧重点是区别对于Adodb缓存Cache而言它缓存Cache是数据对于Smarty缓存Cache而言它缓存Cache是页面其他提供缓存Cache功能组件还有很多(如:PEAR::Cache_Lite等等)实际编程中使用哪个方案要具体情况具体分析也可能会综合使用
使用这些组件内置缓存Cache方案有个很明显好处是它们实现对客户端而言都很透明只要进行必要设置(如:缓存Cache时间缓存Cache目录等等)就可以了而不用过多考虑实现缓存Cache细节问题系统会根据设置自动管理缓存Cache但是其缺点也同样明显每次请求仍然要用PHP解析效率和纯静态相比还是大打折扣在大PV面前还是不能满足要求在这种情况下仅仅做动态缓存Cache就不够了必须实现静态缓存Cache
Tags:  缓存技术 磁盘缓存技术 php图片缓存 php缓存

延伸阅读

最新评论

  1. 祝恒龙

发表评论