PHP緩存技術總結

隨着近些年web技術的快速發展,性能與安全問題成爲關注的焦點。PHP做爲一門流行的web開發語言,也是不少公司作站的首選,這裏要說的也就是PHP緩存技術。php

1 全頁面靜態化緩存,將全站生成靜態的html,這樣直接訪問HTML效率會提高不少,這些年流行的CMS也都是這個原理,好比phpcms,dedecmshtml

     具體實現:ob_start(); //打開緩存區web

                    somecode //運行代碼redis

                    $content = ob_get_content(); //返回「輸出緩存區的內容」sql

                    somecode //運行代碼,使用相似於file_put_contents寫入到html中去數據庫

                    ob_clearn(); //清除緩存區apache

2 頁面部分緩存:將頁面中不常變更的部分進行靜態化緩存,而常常變化的部分不緩存,最後組裝在一塊兒顯示;可使用相似ob_get_contents()的方式實現,也能夠利用相似ESI之類的頁面片斷緩存策略,使其用來作動態頁面中相對靜態的片斷部分的緩存。該緩存方式經常使用與商城中的商品頁。數組

3 數據緩存:緩存數據的一種方式。好比,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就能夠將這些 數據緩存到一個php文件中,文件名包含商品id來建一個惟一標示;下一次有人想查看這個商品時,首先就直接調這個文件裏面的信息,而不用再去數據庫查 詢;其實緩存文件中緩存的就是一個php數組之類;Ecmall商城系統裏面就用了這種方式;緩存

四、查詢緩存:根據查詢來進行緩存。將查詢獲得的數據緩存在一個文件中,下次遇到相同的查詢時,就直接先從這個文件裏面調數據,再也不去查數據庫;但此處的緩存文件名可能就須要以查詢語句爲基點來創建惟一標示.安全

注意:以上幾種緩存方式都須要對緩存的文件設置一個有效時間,在這個時間內,相同的訪問會先取緩存文件的內容,超過有效時間後就從新從數據庫中獲取數據,並生成新的緩存文件。

 五、內存式緩存:使用redis,memcached等nosql數據庫設置PHP緩存,經過緩存查詢結果,來減小數據庫的訪問次數,從而提升網站的響應速度。

 六、apache緩存模塊:apache安裝完之後,是不容許被cache的。若是外接了cache或squid服務器要求進行web加速的話,就須要在htttpd.conf裏進行設置,固然前提是在安裝apache的時候要激活mod_cache的模塊。
安裝apache時:./configure –enable-cache –enable-disk-cache –enable-mem-cache

七、PHP APC緩存擴展:使用PHP中的APC擴展來進行緩存

、Opcode:首先php代碼被解析爲Tokens,而後再編譯爲Opcode碼,最後執行Opcode碼,返回結果;因此,對於相同的php文件,第一次運行時 能夠緩存其Opcode碼,下次再執行這個頁面時,直接會去找到緩存下的opcode碼,直接執行最後一步,而再也不須要中間的步驟了。比較知名的是XCache、Turck MM Cache、PHP Accelerator等。關於PHP Opcode,鳥哥的博客中有一篇詳解:http://www.laruence.com/2008/06/18/221.html

相關文章
相關標籤/搜索