国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

Drupal7的cache緩存開發(fā)實例教程

2024-08-30 19:07:47
字體:
供稿:網(wǎng)友

本文實例講述了Drupal7的cache緩存開發(fā)的方法。分享給大家供大家參考。具體方法如下:

Drupal是一款非常好用的php開發(fā)的開源內(nèi)容管理框架了,這個框架在緩存方面做得非常的不錯,下文一起來學(xué)習(xí)Drupal7 cache緩存開發(fā)吧。

使用Drupal構(gòu)建復(fù)雜而動態(tài)的內(nèi)容是件很容易的事情。但是稍有不慎,你會為這種容易付出代價。在用戶查看某些復(fù)雜而動態(tài)的頁面的時候,復(fù)雜的數(shù)據(jù)庫查詢,與高花銷的計算會導(dǎo)致頁面性能方面的問題。

解決方案之一是在Druapl的后臺頁面開啟頁面緩存。頁面緩存開啟后,可以在某些頁面極大的降低數(shù)據(jù)庫查詢次數(shù)從而提高頁面性能。但是這有一定的局限性,就是頁面緩存僅僅對匿名用戶有效。對應(yīng)登錄用戶則會生效。

逐漸的,你可能會分析自己寫過的代碼,找出數(shù)據(jù)出查詢的熱點進行緩存優(yōu)化。幸運的是,Drupal已經(jīng)內(nèi)置了一些緩存API,如果遵循下面的一些規(guī)則,可以將你的代碼優(yōu)化工作變得更容易。

基本規(guī)則:

規(guī)則:如果計算結(jié)果可以重用或存儲,就不要計算兩次。
下面的簡單例子用來演示這種情況。


function my_module_function() {
$my_data = &drupal_static(__FUNCTION__);
if (!isset($my_data)) {
//將一些高花銷的計算邏輯寫在這里,并將結(jié)果賦值給$my_data變量。
}
return $my_data;
}

理解上面的的代碼,需要一定的php基礎(chǔ)知識。
首先是知道php有個變量類型是靜態(tài)變量(static)。drupal_static函數(shù)其實就是實現(xiàn)static變量的集中管理。
其次是函數(shù)前加"&"符號,這種是按址傳值。這樣的話,對$my_data變量的任何更改,對&drupal_static(__FUNCTION__)都會相應(yīng)更改。

這兩點理解后再來看上面的邏輯,發(fā)現(xiàn)雖然只有一個if判斷,但其實這段代碼是精妙無比的。

進階:善用Drupal的cache函數(shù)。

在上面的代碼中,靜態(tài)變量的數(shù)據(jù)只會在一次的頁面加載過程中有效。如果重新訪問該頁面,則會重新進行數(shù)據(jù)的計算。就是說靜態(tài)變量緩存的數(shù)據(jù)只是暫時的,沒有長久的存儲起來。下面的代碼,演示如何將復(fù)雜的計算結(jié)果的數(shù)據(jù)存儲到drupal的cache表中,從而實現(xiàn)長久存儲的目的。


function my_module_function() {
$my_data = &drupal_static(__FUNCTION__);
if (!isset($my_data)) {
if ($cache = cache_get('my_module_data')) {
$my_data = $cache->data;
}
else {
//將一些高花銷的計算邏輯寫在這里,并將結(jié)果賦值給$my_data變量。
//這里將計算的結(jié)果保存到cache表中。
cache_set('my_module_data', $my_data, 'cache');
}
}
return $my_data;
}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 惠水县| 奉化市| 犍为县| 城口县| 吴堡县| 南汇区| 元谋县| 怀仁县| 黎平县| 五寨县| 延川县| 东乡族自治县| 会东县| 土默特左旗| 武川县| 陈巴尔虎旗| 于田县| 东乡| 阿勒泰市| 沙雅县| 集安市| 浙江省| 长兴县| 菏泽市| 任丘市| 吴川市| 敖汉旗| 囊谦县| 菏泽市| 卢湾区| 西昌市| 乌鲁木齐县| 垣曲县| 四子王旗| 拜泉县| 孝义市| 原阳县| 凤庆县| 都昌县| 黄山市| 钟祥市|