PHP缓存用到哪了,PHP_php缓存技术,为什么要使用缓存技术?理由 - phpStudy

php缓存技术

为什么要使用缓存技术?理由很简单:提高效率。在程序开发中,获取信息的方式主要是查询数据库,除此以外,也可能是通过Web Services或者别的某种方法,无论哪种方法,在大量的并发访问面前,它们都可能成为效率的瓶颈,为了解决这些问题,人们提出了很多解决方案,其中一些是利用优化软件(如:APC,Eaccelerator,Zend Optimizer等等)来提高程序的运行效率,合理的运用这些软件,往往能使程序的运行效率得到数量级上的提升,但前提是你必须拥主机的控制权,以便能够安装这些软件,如果你使用的是虚拟主机的话,那么只能祈祷你的服务提供商已经预装了某个优化软件,否则就必须自己使用PHP来实现相应的缓存功能。如果这让你感到无所适从,相信下面的文字能给你一些启发。

很多PHP程序员都使用Adodb+Smarty这样的黄金搭档,那么就先看看如何使用它们的缓存功能。

首先看看adodb提供的数据缓存功能:

include('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);

?>

如上,每次查询数据的时候,会把相应的结果序列化后保存到文件中,以后同样的查询语句就可以不用直接查询数据库,而是从缓存文件中获得。

再来看看Smarty提供的页面缓存功能:

require('Smarty.class.php');

$smarty = new Smarty;

$smarty->caching = true;

if(!$smarty->is_cached('index.tpl')) {

// No cache available, do variable assignments here.

$contents = get_database_contents();

$smarty->assign($contents);

}

$smarty->display('index.tpl');

?>

如上,每次访问页面的时候,都会先检测相应的缓存是否存在,如果不存在,就连接数据库,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次访问的时候缓存文件就发挥作用了,而不会再执行if块的数据查询语句了。当然,在实际使用中会有很多东西要考虑,比如,有效期的设置,缓存组的设置等等,具体可以查看Smarty手册中有关缓存(caching)的相关章节。

以上两个PHP流行组件缓存方式的侧重点是不同的,对于Adodb的缓存而言,它缓存的是数据,对于Smarty的缓存而言,它缓存的是页面。其他提供缓存功能的组件还有很多(如:PEAR::Cache_Lite等等),实际编程中使用哪个方案要具体情况具体分析,也可能会综合使用。

使用这些组件内置的缓存方案有一个很明显的好处是它们的实现对客户端而言都很透明。只要进行必要的设置(如:缓存时间,缓存目录等等)就可以了,而不用过多考虑实现缓存的细节问题,系统会根据设置自动管理缓存。但是其缺点也同样明显,因为每次请求仍然要用PHP解析一遍,效率和纯静态相比还是大打折扣,在大的PV面前还是不能满足要求,在这种情况下,仅仅做动态缓存就不够了,必须实现静态缓存。相关阅读:

Fedora 9 系统下ALSA声卡驱动下载及安装方法

php 截取字符串并以零补齐str_pad() 函数

F#教程: List

CSS网页布局入门教程11:带当前标识的标签式横向导航图片美化版

Ajax简介 1.5 相关技术

Linux如何默认进入文本模式

js+AJAX异步从优酷专辑中采集所有视频及信息

自动检测所有盘然后删除所有分区的默认共享的批处理

判断iframe是否加载完成的完美方法

未知高度的非表格垂直对齐

SQL查询入门(上篇) 推荐收藏

PHP设计模式 注册表模式(多个类的注册)

CSS教程:优先级问题的考虑实例

如何把ACCESS的数据导入到Mysql中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值