PHP數(shù)據(jù)緩存技術(shù)
更新時(shí)間:2007年02月14日 00:00:00 作者:
數(shù)據(jù)緩存是web開發(fā)中常用的一種性能優(yōu)化方法。目前主要文件緩存或者數(shù)據(jù)庫(kù)緩存兩種形式,數(shù)據(jù)庫(kù)緩存數(shù)據(jù)庫(kù)不是什么不可能的事情,的確也是很好很重要的。我認(rèn)為傳統(tǒng)數(shù)據(jù)庫(kù)主要是從業(yè)務(wù)層、模塊設(shè)計(jì)等方面來考慮的,而緩存數(shù)據(jù)庫(kù)主要是從實(shí)現(xiàn)層來設(shè)計(jì)的,主要是為了緩存常用的多表查詢之類的。這里主要將的是文件緩存,網(wǎng)上很多資料了,這里我轉(zhuǎn)載了一些原理資料。
Cache是“以空間換時(shí)間”策略的典型應(yīng)用模式,是提高系統(tǒng)性能的一種重要方法。緩存的使用在大訪問量的情況下能夠極大的減少對(duì)數(shù)據(jù)庫(kù)操作的次數(shù),明顯降低系統(tǒng)負(fù)荷提高系統(tǒng)性能。相比頁(yè)面的緩存,結(jié)果集是一種“原始數(shù)據(jù)”不包含格式信息,數(shù)據(jù)量相對(duì)較小,而且可以再進(jìn)行格式化,所以顯得相當(dāng)靈活。由于PHP是“一邊編譯一邊執(zhí)行”的腳本語(yǔ)言,某種程度上也提供了一種相當(dāng)方便的結(jié)果集緩存使用方法——通過動(dòng)態(tài)include相應(yīng)的數(shù)據(jù)定義代碼段的方式使用緩存。如果在“RamDisk”上建緩存的話,效率應(yīng)該還可以得到進(jìn)一步的提升。以下是一小段示例代碼,供參考。
適用情況:
1.數(shù)據(jù)相對(duì)比較穩(wěn)定,主要是讀取操作。
2.文件操作要比數(shù)據(jù)庫(kù)操作快。
3.復(fù)雜數(shù)據(jù)訪問,大數(shù)據(jù)量訪問,密集數(shù)據(jù)訪問,系統(tǒng)數(shù)據(jù)庫(kù)負(fù)載極重。
4.Web/DB分離結(jié)構(gòu)或者多Web單DB結(jié)構(gòu)。
未經(jīng)證實(shí)的問題:
1.并發(fā)訪問時(shí)對(duì)文件的讀寫是否會(huì)引起鎖定問題。
2.涉及到的數(shù)據(jù)文件太多時(shí),性能如何。
擴(kuò)展思路:
1.生成JavaScript數(shù)據(jù)定義代碼,在客戶端調(diào)用。
2.還未想到……
望共同探討。
Cache是“以空間換時(shí)間”策略的典型應(yīng)用模式,是提高系統(tǒng)性能的一種重要方法。緩存的使用在大訪問量的情況下能夠極大的減少對(duì)數(shù)據(jù)庫(kù)操作的次數(shù),明顯降低系統(tǒng)負(fù)荷提高系統(tǒng)性能。相比頁(yè)面的緩存,結(jié)果集是一種“原始數(shù)據(jù)”不包含格式信息,數(shù)據(jù)量相對(duì)較小,而且可以再進(jìn)行格式化,所以顯得相當(dāng)靈活。由于PHP是“一邊編譯一邊執(zhí)行”的腳本語(yǔ)言,某種程度上也提供了一種相當(dāng)方便的結(jié)果集緩存使用方法——通過動(dòng)態(tài)include相應(yīng)的數(shù)據(jù)定義代碼段的方式使用緩存。如果在“RamDisk”上建緩存的話,效率應(yīng)該還可以得到進(jìn)一步的提升。以下是一小段示例代碼,供參考。
<?
// load data with cache
function load_data($id,$cache_lifetime) {
// the return data
$data = array();
// make cache filename
$cache_filename = ‘cache_‘.$id.‘.php‘;
// check cache file‘s last modify time
$cache_filetime = filemtime($cache_filename);
if (time() - $cache_filetime <= $cache_lifetime) {
//** the cache is not expire
include($cache_filename);
} else {
//** the cache is expired
// load data from database
// ...
while ($dbo->nextRecord()) {
// $data[] = ...
}
// format the data as a php file
$data_cache = "
while (list($key, $val) = each($data)) {
$data_cache .= "$data[‘$key‘]=array(‘";
$data_cache .= "‘NAME‘=>"".qoute($val[‘NAME‘])."\","
$data_cache .= "‘VALUE‘=>\"".qoute($val[‘VALUE‘])."\""
$data_cache .= ";);\r\n";
}
$data_cache = "?>\r\n";
// save the data to the cache file
if ($fd = fopen($cache_filename,‘w+‘)) {
fputs($fd,$data_cache);
fclose($fd);
}
}
return $data;
}
?>
適用情況:
1.數(shù)據(jù)相對(duì)比較穩(wěn)定,主要是讀取操作。
2.文件操作要比數(shù)據(jù)庫(kù)操作快。
3.復(fù)雜數(shù)據(jù)訪問,大數(shù)據(jù)量訪問,密集數(shù)據(jù)訪問,系統(tǒng)數(shù)據(jù)庫(kù)負(fù)載極重。
4.Web/DB分離結(jié)構(gòu)或者多Web單DB結(jié)構(gòu)。
未經(jīng)證實(shí)的問題:
1.并發(fā)訪問時(shí)對(duì)文件的讀寫是否會(huì)引起鎖定問題。
2.涉及到的數(shù)據(jù)文件太多時(shí),性能如何。
擴(kuò)展思路:
1.生成JavaScript數(shù)據(jù)定義代碼,在客戶端調(diào)用。
2.還未想到……
望共同探討。
您可能感興趣的文章:
- php緩存技術(shù)介紹
- PHP 輸出緩存詳解
- php 文件夾刪除、php清除緩存程序
- php cache類代碼(php數(shù)據(jù)緩存類)
- PHP MemCached高級(jí)緩存配置圖文教程
- PHP下利用header()函數(shù)設(shè)置瀏覽器緩存的代碼
- PHP禁止頁(yè)面緩存的代碼
- PHP中文件緩存轉(zhuǎn)內(nèi)存緩存的方法
- php定時(shí)刪除文件夾下文件(清理緩存文件)
- 使用PHP靜態(tài)變量當(dāng)緩存的方法
- php實(shí)現(xiàn)memcache緩存示例講解
- PHP常用的緩存技術(shù)匯總
- ThinkPHP緩存方法S()概述
- ThinkPHP實(shí)現(xiàn)一鍵清除緩存方法
- thinkphp緩存技術(shù)詳解
- PHP使用header()輸出圖片緩存實(shí)例
- php頁(yè)面緩存方法小結(jié)
- php操作redis緩存方法分享
- PHP 9 大緩存技術(shù)總結(jié)
- PHP中常見的緩存技術(shù)實(shí)例分析
- 一個(gè)簡(jiǎn)單至極的PHP緩存類代碼
相關(guān)文章
PHP讀取txt文件的內(nèi)容并賦值給數(shù)組的代碼
使用file_get_contents()獲取txt文件的內(nèi)容,然后通過explode()把獲得的字符串轉(zhuǎn)化為數(shù)組。獲得數(shù)組長(zhǎng)度可以使用count()函數(shù)2011-11-11
使用session判斷用戶登錄用戶權(quán)限(超簡(jiǎn)單)
本篇文章是對(duì)session判斷用戶登錄用戶權(quán)限進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
PHP使用NuSOAP調(diào)用Web服務(wù)的方法
這篇文章主要介紹了PHP使用NuSOAP調(diào)用Web服務(wù)的方法,涉及php實(shí)現(xiàn)web服務(wù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
PHP實(shí)現(xiàn)獲取某個(gè)月份周次信息的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)獲取某個(gè)月份周次信息的方法,涉及php針對(duì)日期與時(shí)間的相關(guān)計(jì)算技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
解析PHP獲取當(dāng)前網(wǎng)址及域名的實(shí)現(xiàn)代碼
本篇文章是對(duì)PHP獲取當(dāng)前網(wǎng)址及域名的代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
windows下升級(jí)PHP到5.3.3的過程及注意事項(xiàng)
自從讓自己專注于LAMP方面以來,就一直在關(guān)注PHP社區(qū)的動(dòng)向,今天上了官網(wǎng)php.net,發(fā)現(xiàn)發(fā)布了新版的了.PHP5.3.3,提高了穩(wěn)定性和安全性,就有了升級(jí)的念頭了.2010-10-10

