介绍 – 介绍 Cache_Lite
constructor Cache_Lite::Cache_Lite() – 构造函数
Cache_Lite::get() – 测试cache是否存在 并(如果是) 返回它
Cache_Lite::save() – 保存数据到一个cache 文件
Cache_Lite::remove() – 删除一个cache文件
Cache_Lite::clean() – 清除cache
Cache_Lite::setToDebug() –设置为调试模式
Cache_Lite::setLifeTime() – 设置新的生命周期
Cache_Lite::saveMemoryCachingState() --
Cache_Lite::getMemoryCachingState() --
Cache_Lite::lastModified() – 返回cache最后更新时间。
Cache_Lite::raiseError() – 触发一个 PEAR 错误
constructor Cache_Lite_Output::Cache_Lite_Output() -- 构造函数
Cache_Lite_Output::start() – 测试是否一个cache有效 并(如果有效)返回它输出到浏览器. 否则,激活输出缓冲.
Cache_Lite_Output::end() – 停止由start()方法开始的输出缓冲并且保存输出到一个cache文件
constructor Cache_Lite_Function::Cache_Lite_Function() -- 构造函数
Cache_Lite_Function::call() – 调用一个可缓冲的函数或方法 (如果已经有个一个cache则不进行调用)
Cache_Lite提供一个快速、轻量级、安全的 cache 系统. 它对文件容器进行了优化并且可以防止cache的讹误(因为它使用了文件锁 和/或 hash测试).
介绍
介绍 – 介绍 Cache_Lite
描述
PEAR::Cache_Lite是一个小型的cache 系统. 它对高流量的网站进行优化所以它真正的快洁和安全 (因为它使用了文件锁 和/或 反讹误测试).
目标和技术细节
速度
首先, PEAR::Cache_Lite 一定要非常的快. 这使得通过在网站利用PEAR可以在不用高端的硬件解决方案的情况下承担高访问量.
在这个文档里,你可以发现关于cache_lite技术选择的更多的细节. 但是包含PEAR.php的主要目的只是用它的错误处理机制(非常不错).
简单
因为cache系统经常被嵌入在应用层,PEAR::Cache_Lite内核必须很小并且灵活 并有一个合适的licence (LGPL). 高级的应用可以在扩展内核的文件中实现.
安全
在高访问量的网站, cache 系统一定要发防止cache 文件讹误 (因为在读/写模式下会有竞争访问的问题). 很少有cache 系统提供关于这个问题的保护措施
文件锁并不是一个完美的解决方案因为它不能用于NFS或多线程的服务器上。所以除它之外,PEAR::Cache_Lite 提供两种完全透明的机制(基于hash key)来保证数据在所有情况下的安全。要得到更多的细节,可以参考上一章所给的链接。
用法
通常用法
Cache_Lite的所用模块遵循相同的体系。
参数(与缺省的不同的部分)使用联合数租来传递到构造函数
一个cache文件由一个cache ID来定义 (最后的一个组).由于显而易见的灵活性的原因, ID的选择留给开发这决定。
内核
让我们由一个简单的例子开始: 页面构建然后用一个唯一的变量(字符串)恢复:
<?php
// 包含package
require_once('Cache/Lite.php');
// 为这个cache 设置一个id
$id = '123';
// 设置一些参数
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 3600
);
// 创建一个 Cache_Lite 对象
$Cache_Lite = new Cache_Lite($options);
// 测试是否为一个有效的id
if ($data = $Cache_Lite->get($id)) {
// 找到 Cache !
// 内容在 $data 中
// (...)
} else { // 没有发现有效的cache (你需要创建页面)
// Cache 丢失 !
// 把数据放到 $data 中 并cache他
// (...)
$Cache_Lite->save($data);
}
?>
|
如果你希望每一区块使用一个cache而不是用一个全局cache, 把下面的脚本作为例子:
<?php
require_once('Cache/Lite.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 3600
);
// 创建一个 Cache_Lite 对象
$Cache_Lite = new Cache_Lite($options);
if ($data = $Cache_Lite->get('block1')) {
echo($data);
} else {
$data = 'Data of the block 1';
$Cache_Lite->save($data);
}
echo('<br><br>Non cached line !<br><br>');
if ($data = $Cache_Lite->get('block2')) {
echo($data);
} else {
$data = 'Data of the block 2';
$Cache_Lite->save($data);
}
?>
|
内核
尽管如此,不是总是可以用一个字符串变量来恢复一个页面的所有内容。因此 要用Cache_Lite_Output来帮我们的忙 :
<?php
require_once('Cache/Lite/Output.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 10
);
$cache = new Cache_Lite_Output($options);
if (!($cache->start('123'))) {
// Cache 丢失
for($i=0;$i<1000;$i++) { //制作页面...
echo('0123456789');
}
$cache->end();
}
?>
|
概念和单独区块的用法相同:
<?php
require_once('Cache/Lite/Output.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 10
);
$cache = new Cache_Lite_Output($options);
if (!($cache->start('block1'))) {
// Cache 丢失...
echo('Data of the block 1 !');
$cache->end();
}
echo('Non cached line !');
if (!($cache->start('block2'))) {
// Cache 丢失...
echo('Data of the block 2 !');
$cache->end();
}
?>
|
非常重要的评论
为了将Cache_Lite发挥到最大的功效, 在你的页面中不要包含系统的或其他的packages. 当页面没有cache时(且一定要重算),通过使用条件包含,只载入你需要的模块.
错误的方法 :
<?php
require_once("Cache/Lite.php");
require_once("...")
require_once("...")
// (...)
$cache = new Cache_Lite();
if ($data = $Cache_Lite->get($id)) { // 发现cache !
echo($data);
} else { // 页面必须重新构造到 $data 中
// (...)
$Cache_Lite->save($data);
}
?>
|
这是正确的方法(通常会快两倍多) :
<?php
require_once("Cache/Lite.php");
// (...)
$cache = new Cache_Lite();
if ($data = $Cache_Lite->get($id)) { // cache hit !
echo($data);
} else { //页面必须重新构造到 $data 中
require_once("...")
require_once("...")
// (...)
$Cache_Lite->save($data);
}
?>
|
结论
要更大效率的使用 Cache_Lite, 请看例子和包中所给的技术细节。.
constructorCache_Lite::Cache_Lite()
constructor Cache_Lite::Cache_Lite() – 构造函数
大纲
void constructor Cache_Lite::Cache_Lite ([array $options = array(NULL)])
描述
Cache_Lite核心类的构造函数. 你可以提供一个关联数组作为参数来设置大量选项。
参数
array $options
关联数组可以设置大量的选项
表 23-1.
|
选项 |
数据类型 |
缺省值 |
描述 |
|
cacheDir |
string |
/tmp/ |
放置cache 文件的目录 (结尾要加上’/’) |
|
caching |
boolean |
TRUE |
|