也就是說,所有的頁面都生成為html靜態頁面,用戶訪問時可以直接訪問,而不需要經過php服務器解析的過程。這種方法在CMS系統中很常見,比如dedecms;
壹種常見的實現方法是使用輸出緩存:
Ob _ start () * * * * *要運行的代碼* * * * * $ content = ob _ get _ contents();* * * *將緩存的內容寫入html文件* * * * ob _ end _ clean();
第二,數據緩存
顧名思義,它是壹種緩存數據的方式;例如,當用商品id請求購物中心中的商品信息時,將獲得包括商店信息和商品信息的數據。這時可以將這些數據緩存在壹個php文件中,文件名中包含商品id來構建唯壹標記;下次有人想查這個產品,先直接查這個文件裏的信息,不用去數據庫查詢。其實緩存文件裏緩存的是php數組之類的;
該方法應用於Ecmall商城系統;
第三,查詢緩存
其實這和數據緩存是壹個思路,就是根據查詢語句進行緩存;將查詢得到的數據緩存在壹個文件中,下次遇到同樣的查詢,直接先從這個文件中調出數據,不會再去查數據庫;但是,這裏的緩存文件名可能需要根據查詢語句來建立唯壹的標簽;
按時間變化緩存
即妳需要為緩存文件設置壹個有效時間,在此期間相同的訪問會先取緩存文件的內容,但是在設置的緩存時間之後,妳需要再次從數據庫中獲取數據,產生最新的緩存文件;比如我把我們商城的主頁設置成每2個小時更新壹次。
第四,頁面部分緩存
這樣,壹個頁面中變化不頻繁的部分被靜態緩存,而變化頻繁的塊不被緩存,最後組裝在壹起顯示;可以用類似ob_get_contents的方式實現,也可以用ESI這樣的頁面片段緩存策略來緩存動態頁面相對靜態的片段部分。
這種方法可以用在,比如商城裏的商品頁面;
第五,操作碼緩存
首先,php代碼被解析成令牌,然後編譯成操作碼代碼,最後執行操作碼代碼返回結果。所以,對於同壹個php文件,可以在第壹次運行時緩存它的操作碼代碼,下次執行這個頁面時,直接找到緩存的操作碼代碼,直接執行最後壹步,不需要中間步驟。
比較知名的有XCache、TurckMMCache、PHPAccelerator等等。
6.根據內容變化進行緩存
這不是壹個獨立的緩存技術,需要結合起來;即當數據庫內容被修改時,緩存文件立即更新;
比如人流量大的商場,商品很多,商品清單必然比較大,這壹桌的壓力也比較重;我們可以緩存產品展示頁面;
當商家在後臺修改該商品信息時,點擊保存,我們將同時更新緩存文件;那麽,當買家訪問這個產品信息時,他實際上問的是壹個靜態頁面,他不需要再次訪問數據庫;
想象壹下,如果產品頁面沒有緩存,那麽每次訪問壹個產品,都要在數據庫中查詢。如果有65438+萬人在線瀏覽產品,服務器的壓力會很大;
七、內存緩存
說到這,可能大家第壹個想到的就是Memcached;Memcached是壹個高性能的分布式內存緩存服務器。壹般目的是通過緩存數據庫查詢結果來減少數據庫訪問次數,從而提高動態Web應用的速度和可擴展性。
是將需要緩存的信息緩存在系統內存中,需要獲取時直接從內存中取出;更常見的方式是key _ & gt價值模式;
connect($memcachehost,$memcacheport)或die(" could not connect ");$ memcache-& gt;Set('key ','緩存內容');$ get = $ memcache-& gt;get($ key);//獲取信息?& gt
八、apache緩存模塊
apache安裝後,不允許緩存。北京IT培訓認為,如果外部緩存或squid服務器需要web加速,需要在htttpd.conf中設置,前提是安裝apache時激活mod_cache模塊。