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

首頁 > 網站 > 建站經驗 > 正文

Drupal7之drupal_static函數用法解析

2024-08-30 19:05:44
字體:
來源:轉載
供稿:網友

Drupal7 非常強大,其強大核心之一是entity field模式,比如node/taxonomy term/ user 都是一種entity, 并且支持field模式,也就是用戶可以隨意的添加新的field給node/taxonomy term/user;

強大的背后是性能的擔憂;加入node有10個field,那么就對應10個表來裝載field數據,而不是一個列,這就導致了至少10個join 去查詢一個node. 這對數據庫的性能影響是巨大,甚至是致命的;試想,如果一個頁面有10個block, 每個block包含10個node, 每個node有10個field, 那么查詢表的次數就是10次(使用entity_load_multiple),join的次數是100次;

我們幾乎沒有直接的辦法解決這個問題,畢竟這就是Drupal.

在這里我們提供一個小的性能優化辦法,即使用drupal_static函數,這個優化方法是PHP級別的,需要了解基本的PHP知識。

這個函數可以緩存函數執行結果,保證在函數執行退出后,結果存在內存中,但是又不同于memcache,它在一個請求結束后就自動釋放。

這里舉個例子:

現在有這樣子的需求,頁面上有2個block: last_news block, last_comment block,內容要求是last_comment 需要10條,首先取last_news 的comment, 如果不足,則按照時間先后順序取出除了和last_news comment 匹配的項;

分析下,last_news block保護了last_news 數據,在last_comment 也需要這個數據,假設有方法叫: news_last_news_data() 返回這個last_news,

函數原型:

復制代碼
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘乡市| 邵武市| 葵青区| 贵德县| 龙陵县| 上栗县| 博湖县| 镇原县| 腾冲县| 右玉县| 明光市| 东阿县| 津市市| 汉川市| 进贤县| 玉山县| 黄山市| 江津市| 石台县| 新邵县| 连平县| 凉城县| 南川市| 台中市| 古田县| 白玉县| 宁河县| 兰考县| 宜黄县| 上高县| 茌平县| 新巴尔虎右旗| 宜城市| 绥江县| 新蔡县| 东丽区| 运城市| 枞阳县| 浦北县| 吴旗县| 黑山县|