php緩存技術(shù)_PHP教程
推薦:PHP數(shù)組排序函數(shù)合集下邊提到的幾個(gè)PHP數(shù)組排序函數(shù)的排序有一些共性: 1 數(shù)組被作為排序函數(shù)的參數(shù),排序以后,數(shù)組本身就發(fā)生了改變,函數(shù)的返回值為bool類型。 2 函數(shù)名中出現(xiàn)單a表示association,含義為,在按值排序的過(guò)程中,保持key=value的對(duì)應(yīng)關(guān)系不變 3 函數(shù)名中出現(xiàn)單k表示key,
緩存是指臨時(shí)文件交換區(qū),電腦把最常用的文件從存儲(chǔ)器里提出來(lái)臨時(shí)放在緩存里,就像把工具和材料搬上工作臺(tái)一樣,這樣會(huì)比用時(shí)現(xiàn)去倉(cāng)庫(kù)取更方便。因?yàn)榫彺嫱褂玫氖荝AM(斷電即掉的非永久儲(chǔ)存),所以在忙完后還是會(huì)把文件送到硬盤等存儲(chǔ)器里永久存儲(chǔ)。電腦里最大的緩存就是內(nèi)存條了,最快的是CPU上鑲的L1和L2緩存,顯卡的顯存是給GPU用的緩存,硬盤上也有16M或者32M的緩存。千萬(wàn)不能把緩存理解成一個(gè)東西,它是一種處理方式的統(tǒng)稱!
在WEB開(kāi)發(fā)中用來(lái)應(yīng)付高流量最有效的辦法就是用緩存技術(shù),能有效的提高服務(wù)器負(fù)載性能,用空間換取時(shí)間。
互聯(lián)網(wǎng)也是2 8定論,就像百度搜索中的關(guān)鍵字一樣,80%的人所搜索的肯定就是 20%的內(nèi)容,所以只需要把這 20%的關(guān)鍵字的內(nèi)容綬存好就可以很有效的在數(shù)十億的記錄中快速的返回給用戶需要的內(nèi)容。
我們來(lái)看一下在PHP WEB開(kāi)發(fā)中常用的一些緩存手段。
1、普遍緩存技術(shù):
數(shù)據(jù)緩存:這里所說(shuō)的數(shù)據(jù)緩存是指數(shù)據(jù)庫(kù)查詢PHP緩存機(jī)制,每次訪問(wèn)頁(yè)面的時(shí)候,都會(huì)先檢測(cè)相應(yīng)的緩存數(shù)據(jù)是否存在,如果不存在,就連接數(shù)據(jù)庫(kù),得到數(shù)據(jù),并把查詢結(jié)果序列化后保存到文件中,以后同樣的查詢結(jié)果就直接從緩存表或文件中獲得。
用的最廣的例子看Discuz的搜索功能,把結(jié)果ID緩存到一個(gè)表中,下次搜索相同關(guān)鍵字時(shí)先搜索緩存表。
舉個(gè)常用的方法,多表關(guān)聯(lián)的時(shí)候,把附表中的內(nèi)容生成數(shù)組保存到主表的一個(gè)字段中,需要的時(shí)候數(shù)組分解一下,這樣的好處是只讀一個(gè)表,壞處就是兩個(gè)數(shù)據(jù)同步會(huì)多不少步驟,數(shù)據(jù)庫(kù)永遠(yuǎn)是瓶頸,用硬盤換速度,是這個(gè)的關(guān)鍵點(diǎn)。
2、 頁(yè)面緩存:
每次訪問(wèn)頁(yè)面的時(shí)候,都會(huì)先檢測(cè)相應(yīng)的緩存頁(yè)面文件是否存在,如果不存在,就連接數(shù)據(jù)庫(kù),得到數(shù)據(jù),顯示頁(yè)面并同時(shí)生成緩存頁(yè)面文件,這樣下次訪問(wèn)的時(shí)候頁(yè)面文件就發(fā)揮作用了。(模板引擎和網(wǎng)上常見(jiàn)的一些PHP緩存機(jī)制類通常有此功能)
3、 時(shí)間觸發(fā)緩存:
檢查文件是否存在并且時(shí)間戳小于設(shè)置的過(guò)期時(shí)間,如果文件修改的時(shí)間戳比當(dāng)前時(shí)間戳減去過(guò)期時(shí)間戳大,那么就用緩存,否則更新緩存。
4、 內(nèi)容觸發(fā)緩存:
當(dāng)插入數(shù)據(jù)或更新數(shù)據(jù)時(shí),強(qiáng)制更新PHP緩存機(jī)制。
5、 靜態(tài)緩存:
這里所說(shuō)的靜態(tài)緩存是指靜態(tài)化,直接生成HTML或XML等文本文件,有更新的時(shí)候重生成一次,適合于不太變化的頁(yè)面,這就不說(shuō)了。
以上內(nèi)容是代碼級(jí)的解決方案,我直接CP別的框架,也懶得改,內(nèi)容都差不多,很容易就做到,而且會(huì)幾種方式一起用,但下面的內(nèi)容是服務(wù)器端的緩存方案,非代碼級(jí)的,要有多方的合作才能做到
6、 內(nèi)存緩存:
Memcached是高性能的,分布式的內(nèi)存對(duì)象PHP緩存機(jī)制系統(tǒng),用于在動(dòng)態(tài)應(yīng)用中減少數(shù)據(jù)庫(kù)負(fù)載,提升訪問(wèn)速度。
7、 php的緩沖器:
有eaccelerator, apc, phpa,xcache,這個(gè)這個(gè)就不說(shuō)了吧,搜索一堆一堆的,自己看啦,知道有這玩意就OK
8、 MYSQL緩存:
這也算非代碼級(jí)的,經(jīng)典的數(shù)據(jù)庫(kù)就是用的這種方式,看下面的運(yùn)行時(shí)間,0.09xxx之類的
9、 基于反向代理的Web緩存:
如Nginx,SQUID,mod_proxy(apache2以上又分為mod_proxy和mod_cache)
10、 DNS輪詢:
BIND是一款開(kāi)放源碼的DNS服務(wù)器軟件,這個(gè)要說(shuō)起來(lái)就大了,自己搜索去,大家知道有這個(gè)東西就行了。
我知道的有chinacache等大站就是這樣做的,說(shuō)簡(jiǎn)單點(diǎn)就是多服務(wù)器啦,把同一個(gè)頁(yè)面或文件緩存到不同的服務(wù)器上,按南北自動(dòng)解析到相關(guān)的服務(wù)器中。
分享:最完整的PHP.INI中文詳細(xì)配置指南下面是詳細(xì)的PHP.INI配置指南,中英文對(duì)照并有詳細(xì)說(shuō)明,篇幅較長(zhǎng),如果您需要查找某項(xiàng)設(shè)置參數(shù),建議使用CTRL+F進(jìn)行查詢. ;;;;;;;;;;;;;;;;; ;; 關(guān)于php.ini ;; ;;;;;;;;;;;;;;;;; ; 這個(gè)文件必須命名為php.ini并放置在httpd.conf中PHPINIDir指令指定的目錄中。 ; 最新版
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-php緩存技術(shù)。