首頁 >後端開發 >php教程 >1.全頁面靜態化緩存

1.全頁面靜態化緩存

WBOY
WBOY原創
2016-07-29 09:15:21846瀏覽

1、全頁面靜態化快取

也就是將頁面全部產生html靜態頁面,使用者造訪時直接造訪的靜態頁面,而不會去走php伺服器解析的流程。此種方式,在CMS系統中比較常見,例如dedecms;

一種比較常用的實作方式是用輸出快取:

<code><span>Ob_start<span>()<span><span>******要运行的代码*******<span>$content <span>=<span><span>Ob_get_contents<span>();<span><span>****将缓存内容写入<span>html<span>文件*****<span><span>Ob_end_clean<span>();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>

2、頁面​​部分快取

該種方式,是將一個頁面中不常變的部分進行靜態緩存,而經常變化的塊不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段緩存策略,使其用來做動態頁面中相對靜態的片段部分的快取(ESI技術,請baidu,此處不詳講)。

該種方式可以用於如商城中的商品頁;

3、資料快取

顧名思義,就是快取資料的一種方式;比如,商城中的某個商品訊息,當用商品id去請求時,就會得出包括店鋪資訊、商品資訊等數據,此時就可以將這些數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下一次有人想查看這個商品時,首先就直接調這個檔案裡面的信息,不用再去資料庫查詢;其實快取檔案裡快取的就是一個php數組之類;

Ecmall商城系統裡面就用了這種方式;

4、查詢快取

其實這跟資料快取是一個思路,就是根據查詢語句來快取;將查詢得到的資料快取在一個檔案中,下次遇到相同的查詢時,就直接先從這個檔案裡面調數據,不會再去查資料庫;但此處的快取檔案名稱可能就需要以查詢語句為基點來建立唯一標示;

按時間變更進行快取

其實,這一條不是真正的快取方式;上面的2、3、4的緩存技術一般都用到了時間變更判斷;就是對於快取檔案您需要設一個有效時間,在這個有效時間內,相同的存取才會先取快取檔案的內容,但是超過設定的快取時間,就需要重新從資料庫中取得數據,並生產最新的快取檔案;例如,我將我們商城的首頁就是設定2個小時更新一次;

5、按內容變更進行快取

這個也並非獨立的快取技術,需結合著用;就是當資料庫內容被修改時,即時更新快取檔案;
比如,一個人流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重;我們就可以對商品顯示頁進行頁面快取;

當商家在後台修改這個商品的資訊時,點擊儲存,我們同時就更新快取檔案;那麼,買家存取這個商品資訊時,實際上造訪的是一個靜態頁面,而不需要再去訪問資料庫

試想,如果對商品頁不緩存,那麼每次訪問一個商品就要去數據庫查一次,如果有10萬人在線瀏覽商品,那服務器壓力就大了;

6、記憶體快取

提到這個,可能大家想到的首先就是MemcachedMemcached是高效能的分散式記憶體快取伺服器。 一般的使用目的是,透過快取資料庫查詢結果,減少資料庫存取次數,以提高動態Web應用的速度、 提高可擴充性。

它就是將需要快取的信息,快取到系統記憶體中,需要取得資訊時,直接到記憶體取;比較常用的方式就是key–>value方式;

<code><span><span>php 
     $memcachehost <span>=<span><span>'192.168.6.191'<span>;<span>     $memcacheport <span>=<span><span>11211<span>;<span>     $memcachelife <span>=<span><span>60<span>;<span>     $memcache <span>=<span><span>new<span><span>Memcache<span>;<span>     $memcache<span>-><span>connect<span>(<span>$memcachehost<span>,<span>$memcacheport<span>)<span><span>or<span><span>die<span><span>(<span>"Could not connect"<span>);<span>     $memcache<span>-><span>set<span>(<span>'key'<span>,<span>'缓存的内容'<span>);<span>     $get <span>=<span> $memcache<span>-><span>get<span>(<span>$key<span>);<span><span>//获取信息<span><span>?></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>

7、apache快取模組

apache安裝完以後,是不被允許被cache的。如果外接了cache或squid伺服器要求進行web加速的話,就需要在htttpd.conf裡進行設置,當然前提是在安裝apache的時候要啟動mod_cache的模組。

安裝apache時:./configure –enable-cache –enable-disk-cache –enable-mem-cache

8、php APC快取擴充

Php有APC快取,windows下面作為擴充功能_apc.dll,需要快取先載入這個模組,然後是在php.ini裡面進行設定:

<code><span>[<span>apc<span>]<span>
     extension<span>=<span>php_apc<span>.<span>dll 
     apc<span>.<span>rfc1867 <span>=<span> on 
     upload_max_filesize <span>=<span><span>100M<span>
     post_max_size <span>=<span><span>100M<span>
     apc<span>.<span>max_file_size <span>=<span><span>200M<span>
     upload_max_filesize <span>=<span><span>1000M<span>
     post_max_size <span>=<span><span>1000M<span>
     max_execution_time <span>=<span><span>600<span><span>;<span><span>每个<span>PHP<span>页面运行的最大时间值(秒),默认<span>30<span>秒<span>
     max_input_time <span>=<span><span>600<span><span>;<span><span>每个<span>PHP<span>页面接收数据所需的最大时间,默认<span>60<span>
     memory_limit <span>=<span><span>128M<span><span>;<span><span>每个<span>PHP<span>页面所吃掉的最大内存,默认<span>8M</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>

9、Opcode快取

我們知道,php的執行流程可以用下圖來展示:
1.全頁面靜態化緩存
首先php程式碼被解析為Tokens,然後再編譯為Opcode碼,最後執行Opcode碼,返回結果;所以,對於相同的php文件,第一次運行時可以緩存其Opcode碼,下次再執行這個頁面時,直接會去找到緩存下的opcode碼,直接執行最後一步,而不再需要中間的步驟了。

比較知名的是XCache、Turck MM Cache、PHP Accelerator等。

全能程式設計師交流QQ群290551701,聚集許多網路精英,技術總監,架構師,專案經理!開源技術研究,歡迎業內人士,大牛及新手有志於從事IT行業人員進入!

以上就介紹了1、全頁面靜態化緩存,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn