程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> zend framework的Zend

zend framework的Zend

編輯:PHP基礎知識
 

Zend_Cache有兩部分組成:前端和後端,前端用於操作緩存,後端提供緩存的存儲方式。

Zend_Cache的基本使用方式

一般使用工廠方式:Zend_Cache::factory()的創建緩存對象。

Zend_Cache::factory方法有四個參數: 前端類型,後端類型,前端參數,後端參數。

前端類型有:

1.Core 這是前端的核心緩存,前端的其他類型緩存都繼承自Core,緩存變量或數組就用到這個了。

2.File 緩存文件,沒有研究具體用途

3.Output 捕獲並緩存輸出,這個做頁面局部緩存很有用,個人認為缺點是需要在視圖中寫入相應的代碼。

4.Page 緩存頁面,對提高效率幫助很大,因為一但命中緩存,就直接讀取緩存並輸出,不再執行後面的代碼。可以設定session,cookie,get,post 作為產生cache_id的干擾碼。比如不同的cookie產生不同的緩存頁面。缺點是只能整個頁面緩存,不能像smarty那樣實現整頁緩存,但是可以控制局部不緩存。

5.Class 緩存靜態類和對象。

6.Function 緩存函數。

後端類型有:

1.APC

2.File

3.Memcached

4.Sqlite

5.Xcache

6.ZendPlatform

一目了然了,大部分人經常會用到的是File和Memcached吧。

前端參數和後端參數,不同前後端類型有不同的參數,具體請查看官方手冊 http://framework.zend.com/manual/en/zend.cache.frontends.html。

具體實例(數組緩存和頁面緩存)

一.前端類型為Core, 後端類型File的緩存對象的創建及使用

<?php

$frontend = 'Core';

$frontendOptions = array(

'caching' => true, //開啟緩存,調試程序的時候可以設為false

'lifetime' => 3600, //緩存生命期

'automatic_serialization' => true //自動序列化,存儲數組或者對象數據時一定要打開

);

$backend = 'File';

$backendOptions => array(

'cache_dir' => '/tmp', //存放路徑

'file_name_prefix' => 'page_cache' //緩存文件前綴,默認為zend_cache

)

//實例化緩存對象

$coreCache = Zend_Cache::factroy($frontend, $backend, $frontendOptions, $backednOptions);

//如果命中id為news_list的緩存直接得到$newsList,未命中執行大括號內的代碼

if (!$newsList = $coreCache->load('news_list')) {

//查詢數據庫,得到$newsList

//....省略

 

//緩存$newslist至緩存,id為news_list

$coreCache->save($newsList, 'news_list');

}

?>

二、前端類型為Page,後端依然為File的實例

<?php

$frontend = 'Page';

$frontendOptions = array(

'caching' => true, //開啟緩存,調試程序的時候可以設為false

'lifetime' => 3600, //緩存生命期

 

//需要使用頁面緩存的url匹配規則

'regexps' => array(

//首頁的url匹配

'^/(index|index/)?$' =>array(

'cache' => true,

'cache_with_session_variables' => false, //如果存在session變量不緩存

'cache_with_cookie_variables' => true, //如果存在cookie變量緩存

'make_id_with_cookie_variables' => false //不使用cookie變量作為id的干擾碼

)

)

);

$backend = 'File';

$backendOptions => array(

'cache_dir' => '/tmp', //存放路徑

'file_name_prefix' => 'page_cache' //緩存文件前綴,默認為zend_cache

)

//實例化頁面緩存對象

$pageCache = Zend_Cache::factroy($frontend, $backend, $frontendOptions, $backednOptions);

//如果命中緩存,直接輸出緩存內容,並終止程序,後面的代碼將不被執行,如果未命中,捕獲輸出並寫入緩存。

$pageCache->start();

?>

需要注意的是,如果用到頁面緩存,為了最大程度提高執行效率,應將代碼放到程序的最前面。減少不必要的文件包含及操作。

順便提一句,Zend_Cache沒有跟ZF其他組件耦合,所以也可以單獨提取出來用於非ZF框架的程序。

 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved