luc*_*uca 3 php zend-framework cache-control
假设你有这种情况:一个简单的博客主页,它既可以加载静态内容,也可以加载动态内容.静态内容由很少变化的图像组成.我还有数据库驱动的动态内容.动态内容包含所有博客文章(文本和图像)和相关用户评论.动态内容定期从每小时变化到每天.
您将如何使用缓存?特别是假设用户正在发表评论或管理员正在添加/编辑帖子,您希望手动触发缓存清除以获得此博客主页的更新版本?
谢谢你的耐心.
卢卡
再次感谢
首先,链接:http://framework.zend.com/manual/1.11/en/zend.cache.html
基本上,您需要做的是设置缓存机制,然后在想要从缓存中检索内容时手动调用它.
在bootstrap中,我可能有这个代码:
public function _initCache () {
$cache = Zend_Cache::factory(
'Core',
'File',
array(
'lifetime' => 3600 * 24, //cache is cleaned once a day
'automatic_serialization' => true
),
array('cache_dir' => APPLICATION_PATH.'/cache')
);
Zend_Db_Table_Abstract::setDefaultMetadataCache($cache); //cache database table schemata metadata for faster SQL queries
Zend_Registry::set('Cache', $cache);
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用load()和save()函数来操作缓存.我的控制器的一个例子:
$cache = Zend_Registry::get('Cache');
if (!$this->menu = $cache->load('main_menu')) {
$model = new Model_Menu();
$this->menu = $model->get();
$cache->save($this->menu,'main_menu');
}
Run Code Online (Sandbox Code Playgroud)
在这里,我检查密钥"main_menu"是否被缓存.如果对缓存未命中进行评分,则生成并缓存主菜单.
如果我编辑主菜单,我也想重新生成缓存.我简单地称之为:
Zend_Registry::get('Cache')->remove('main_menu');
Run Code Online (Sandbox Code Playgroud)
这很简单,只需阅读文档即可.写得很好.
小智 6
Zend缓存提供了一种在缓存中存储数据并提高速度的非常简单的方法.Zend使用前端和后端来缓存.前端对于访问或操作缓存很有用.后端对于在File,memcache,Sqlite等中存储数据很有用.
首先通过在bootstrap文件中创建on函数来初始化前端和后备的bootstrap文件.
protected function _initCache(){
$frontend= array(
'lifetime' => 7200,
'automatic_serialization' => true
);
$backend= array(
'cache_dir' => '../application/tmp/',
);
$cache = Zend_Cache::factory('core',
'File',
$frontend,
$backend
);
Zend_Registry::set('cache',$cache);
}
Run Code Online (Sandbox Code Playgroud)
然后使用zend cache factory定义缓存对象.参数核心定义了通用类型的zend缓存核心手段File参数是定义缓存存储装置,其中存储缓存的记录,然后来回的前端和后端.
现在使用zend注册表注册该缓存数组,以便您可以在任何控制器,模型等中使用它.
在任何控制器或要使用数据缓存的任何模型中定义以下代码.
$result1 =””;
$cache = Zend_Registry::get('cache');
if(!$result1 = $cache->load('mydata')) {
echo 'caching the data…..';
$data=array(1,2,3);
$cache->save($data, 'mydata');
} else {
echo 'retrieving cache data…….';
Zend_Debug::dump($result1);
}
Run Code Online (Sandbox Code Playgroud)
首先在上面的代码中我们得到了缓存数组.现在,如果未设置结果1,则完成缓存意味着文件是在后端数组中定义的路径上生成的
对于下次页面加载,从缓存数据存储的文件中检索数据.
您可以按照定义的路径检查文件.
在该文件中数据是json格式.
归档时间: |
|
查看次数: |
8157 次 |
最近记录: |