我是把目前php的Cache分成了這四種機制,第一種方式,需要加載模塊,可能是收費的比如ZEND公司的,可能是免費的,不過多討論;第二種方式,比如在成熟的大的站點上用比較合適;第三種方式和第四種四目前PHP業內程序中比較流行的方式
分成3個類別
1.緩存模塊
這這個是在服務器上做的緩存設置,比如Zend公司的Cache產品等,主要原理是通過對PHP代碼文件的一次編譯保存在內存中,通過減少I/O的操作來加快訪問速度,不在本文討論范圍之列
2.HTML方式
或許你說PHP生成HTML的方式不在本文討論的范圍之列,但是我個人人為這種方式仍然是一種Cache方式,如現在流行的生成HTML的程序也有不少,比如國內的一些CMS,這個也不在本文討論的范圍之列,一筆帶過.
3.生成Cache文件
這個就是對一些常用的而且又不是經常變動的量,保存在文本中,通過減少mysql的查詢量來加快程序執行,詳細的內容我們隨後介紹
4.php緩存機制
舉個例子說,smarty模版裡面的緩存機制,比如目前Discuz!論壇用的緩存機制,後面具體說
以Discuz!論壇軟件5.0版本(或許你說了為什麼以Discuz!為例,而不以PhpWind或者其實CMS為例,主要是因為Discuz!和我要說的後面兩種緩存機制結合的比較好,而其他軟件產品都或多或少的不太合適本文的要求)為例,在第三種機制中,Discuz!將基本設置和常用變量保存在forumdata/cache文件夾下面的一個文件中,比如cache_settings.php就是論壇設置的中的數據保存在一個數組總並存在這個文件中,在需要這些變量的時候就通過include這個文件來使用這些變量;在第四種機制中,Discuz!是把templates/default中的模版文件,預編譯,也就是在請求訪問index.php文件的時候,程序先在forumdata/templates中是否已經生成預編譯的文件,如果存在則包含,如果沒有則在模版文件夾中尋找模版然後生成,再包含,這麼一個處理流程
在這種處理機制下,在小負載小站點的情況下,顯然會有不少浪費,但是在中大站點或者說大型超大型站點的具體實施中,表現優異,但是顯然做論壇的貌似都是負載比較大,國內水論壇一堆哇
再過來看Phpwind論壇,做為國內PHP論壇唯一能在Discuz!的壓力下值得一提的一個論壇系統,顯然在緩存機制上的處理不是很好,PW以前貌似也是做文本論壇起家的,同樣的文本對於I/O的壓力是很大的,尤其是在大中型站點的負載均衡上
寫到這裡突然不想寫了,本來是想謝謝插件開發中的對於緩存和模版的應用,然後突然想到寫一些我個人對於當前php緩存機制的一些理解,寫到這裡,寫了2遍,狗日的服務器,娘的MYSQL老是丟失超時,你娘,服務器配的有點水平和好,靠,不寫了