drupal教程:Cache在drupal的中應用
drupal本身會在多個層面執行php代碼,這就造成了它需要大量的時間來輸出內容。Cache(緩存)是最大化提高drupal性能的關鍵性技術。在決定采取何種緩存機制之前,我們必須知道該站是何種類型以及什么樣的用戶回來訪問該站。并不是所有的站點都有相同的緩存機制。(解釋:就本站而言,采用的緩存技術主要有APC,Boost)
緩存技術需要根據不同數據類型以及對用戶的影響來區分。Drupal中的緩存可以根據以下兩大類用戶來區分:
匿名用戶
登陸用戶
傳送給匿名用戶的html頁面是相同的但傳送給登陸用戶的html卻不完全相同,比如說“welcome ‘user name’”。所以我們可以通過給匿名用戶緩存的頁面可以獲得非常高的網站速度?,F在我們一起來看一下drupal中都有哪些緩存技術:
Drupal 內置緩存
drupal內置的緩存機制可以讓我們輕松擴展drupal站點。存儲在cache表中的數據可以被快速讀取。drupal的內置緩存還可以跟后端的緩存系統集成從而替代掉默認的緩存數據表。drupal緩存的設置在admin/config/development/performance頁面,他包含以下選項:
Cache pages for anonymous users:啟用對匿名用戶的頁面緩存。
Cache blocks: 啟用drupal區塊緩存(區塊緩存會被頁面緩存忽略掉)。
Minimum cache lifetime: 最小緩存生命周期。
Expiration of cached pages: 最大緩存生命周期。
使用drupal cache api 自定義的drupal緩存
drupal核心提供了緩存api可以幫助你將緩存存儲到cache表中去。大量數據可以被存儲到特定的cache表中,比如,views模塊使用cache_views以及cache_views_data來存儲views的緩存,以下是幾個主要的drupal 緩存 api:
cache_set($cid, $data, $bin = 'cache', $expire = CACHE_PERMANENT)
cache_get($cid, $bin = 'cache')
cache_clear_all($cid = NULL, $bin = NULL, $wildcard = FALSE)
Drupal views cache:
drupal的views模塊使用cache_views以及cache_views_data兩張表來存儲views中產生的緩存。默認情況下cache是關閉的,但你可以在每個獨立的views display中將它開啟。它能夠允許我們為每個views display來緩存查詢結果和頁面輸出。如果你生成了區塊,你可以將該block輸出到drupal內建的block 緩存中去。
Memcache
Memcache是一個高性能的分布式的內存對象緩存系統,通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。他幫助你降低數據庫負載且速度非??臁Kǔ1挥脕砑铀倌切榈卿浻脩糸_發的網站。他需要一個守護進程(memcached)并且有一個php拓展來使用該服務。但他不能支持共享服務器。 Drupal的memcache module集成drupal以及memcache。你需要設置memcached為drupal的后端緩存系統以便集成該服務到drupal的cache系統。修改一下settings文件即可:
$conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc';
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['memcache_key_prefix'] = 'unique_key'; /Multisite installation/
Opcode Cache
有幾個php的插件可以將程序代碼轉化為bytecode。bytecode能夠跳過第二次的再編譯過程。它能夠降低頁面加載時間、降低cpu占用。這種技術被稱作Opcode Caching。 APC (Alternative PHP Cache) 是這些php Opcode Caching擴展中最常用的一個。(本站有安裝教程) Zend Opcache 是另外一個可供選擇的php擴展。默認情況下他是編譯在php v5.5+。他包含很多apc所沒有的高級特性,但不支持user緩存。
Reverse Proxy - Varnish
Varnish是一款高性能的開源HTTP加速器。 Varnish 扮演著web 服務器跟用戶中間代理人的角色。當Varnish收到用戶的頁面請求,他首先檢查他內部的緩存,如果找到緩存的頁面,他將該頁面返回給用戶,否則再去向原始web服務器區索取內容。 Drupal的 varnish module集成Drupal跟Varnish HTTP 加速器。你需要在你的配置文件 /etc/varnish/default.vcl中添加如下的參數:
backend default {
注意:drupal performance頁面的選項Page cache lifetime通常也定義了Varnish cache過期周期.
Boost
Drupal的boost module提供類似于Varnish的頁面緩存,用戶請求內容時候,他將早先生成的靜態html頁面返回給用戶,避免了二次生成,如果能夠看到以下信息,即代表了你的模塊生效啦,可以右鍵查看該頁面的源碼,我們也使用了boost來加速網站,boost對匿名用戶很有效果,你可以配合Memcached 來加速登錄用戶。
Content Delivery Networks (CDN)
CDN的全稱是Content Delivery Network,即內容分發網絡,其基本思路是盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定,Drupal的cdn module可以為你的drupal站點加速,唯一遺憾的是cdn可能花費你一定的費用.
結論:
以上的各種技術提供給你了更多緩存選擇,通常情況下都可以配置出最佳cache實踐,但更多的是需要因地制宜,結合不同的站點特點來選擇技術、修改配置等.
附drupal官網教程 https://www.drupal.org/node/627252
新聞熱點
疑難解答