最近因?yàn)橹暗捻?xiàng)目需要,需要對(duì)一個(gè)PHP項(xiàng)目進(jìn)行優(yōu)化,優(yōu)化之余,突然想嘗試著用memcache去實(shí)現(xiàn)頁(yè)面靜態(tài)化的思想會(huì)不會(huì)有效果那?
頁(yè)面靜態(tài)話其實(shí)就是在訪問(wèn)一個(gè)頁(yè)面的時(shí)候,由于這個(gè)頁(yè)面很少會(huì)發(fā)生變化,就可以考慮將這個(gè)頁(yè)面生成一個(gè)靜態(tài)的html保存起來(lái),當(dāng)再次訪問(wèn)的時(shí)候直接訪問(wèn)的是靜態(tài)的html,這樣的話會(huì)使網(wǎng)站的響應(yīng)速度大幅度的提高,對(duì)整個(gè)網(wǎng)站的并發(fā)以及性能起到了優(yōu)化作用。
動(dòng)態(tài)生成html需要用到php的ob_start() 、ob_get_contents()函數(shù),其實(shí)這個(gè)過(guò)程就是將解析后的html從瀏覽器的緩存中取出來(lái)保存成html文件。
那么我們用memcache去實(shí)現(xiàn)會(huì)是什么樣的那,首先我們?nèi)〕鲆粋€(gè)頁(yè)面的唯一url地址(當(dāng)然我們之前的寫(xiě)法,每個(gè)函數(shù)只實(shí)現(xiàn)一個(gè)功能),經(jīng)過(guò)md5作為唯一的key放入memcache緩存服務(wù)器中。當(dāng)下一次訪問(wèn)的時(shí)候如果有直接取memcache中的緩存,如果沒(méi)有進(jìn)行正常解析,并將結(jié)果存入memcache服務(wù)器。
下面是具體的實(shí)現(xiàn):
當(dāng)一個(gè)已經(jīng)成型的項(xiàng)目擺在你面前的時(shí)候,如何對(duì)這個(gè)項(xiàng)目進(jìn)行優(yōu)化處理,你拿到的程序有可能是加密的,也有可能項(xiàng)目文件非常大,我們?nèi)绻粋€(gè)一個(gè)的去看源碼,去修改往往是不太現(xiàn)實(shí)的,在這里我的思路時(shí)增加一個(gè)中間層,如此處,我們將項(xiàng)目入口文件改為index2.php,重新建一個(gè)入口文件(index.php)和一個(gè)memcache 的優(yōu)化中間層(index1.php),用新的入口文件對(duì)index1.php 和 index2.php 做引入操作,加入緩存機(jī)制,對(duì)所有的訪問(wèn)鏈接進(jìn)行memcache緩存(采用頁(yè)面靜態(tài)化的思想),把頁(yè)面靜態(tài)化的思想去用memcache實(shí)現(xiàn),是一種很不錯(cuò)的方案,但是會(huì)有一個(gè)缺點(diǎn),這里使用url 做md5作為唯一的key,假如存在一種情況,這個(gè)url有多個(gè)不同的頁(yè)面調(diào)用,此時(shí)會(huì)出現(xiàn)一些其他情況,需要注意,可以采取一個(gè)內(nèi)置參數(shù),讓某些url不再緩存,而這種方法對(duì)于ajax來(lái)說(shuō)是作用不大的,(此處為我自己的理解)因?yàn)閍jax獲取的是一個(gè)參數(shù)傳遞的過(guò)程,中間并沒(méi)有經(jīng)過(guò)瀏覽器的緩存,所以我們得不到ajax的緩存。


其實(shí)memcache是一個(gè)簡(jiǎn)單的內(nèi)存服務(wù)器,平時(shí)的使用中多將數(shù)據(jù)查詢結(jié)果放入其中,當(dāng)短時(shí)間內(nèi)頻繁請(qǐng)求的時(shí)候可以快速響應(yīng),從而緩解是數(shù)據(jù)庫(kù)的壓力。這里這種方法只是一種想法的實(shí)現(xiàn),相信會(huì)有更好的方法去提高響應(yīng)速度,比如我們還可以通過(guò)Opcodes,緩存php的中間碼避免php的多次解析來(lái)提高站點(diǎn)的響應(yīng)速度。但是自我感覺(jué)效果不太大,更大的效果是優(yōu)化sql語(yǔ)句,表結(jié)構(gòu),以及緩存查詢結(jié)果等(僅僅是從自己優(yōu)化的項(xiàng)目來(lái)說(shuō),只代表自己的觀點(diǎn)。)。
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選