七種緩存使用武器 為網(wǎng)站應(yīng)用和訪問(wèn)加速_PHP教程
推薦:讓我們來(lái)編寫(xiě)一些PHP實(shí)用的腳本現(xiàn)在讓我們來(lái)編寫(xiě)一些更實(shí)用的腳本。我們將檢查瀏覽頁(yè)面的訪問(wèn)者用了什么類(lèi)型的瀏覽器。要達(dá)到這個(gè)目的,我們需要檢查用戶(hù)的 agent 字符串,它是瀏覽器發(fā)送的 HTTP 請(qǐng)求的一部分。該信息被存儲(chǔ)
Web應(yīng)用中緩存的七種武器:
1 數(shù)據(jù)庫(kù)的緩存
通常數(shù)據(jù)庫(kù)都支持對(duì)查詢(xún)結(jié)果的緩存,并且有復(fù)雜的機(jī)制保證緩存的有效性。對(duì)于MySQL,Oracle這樣的數(shù)據(jù)庫(kù),通過(guò)合理配置緩存對(duì)系統(tǒng)性能帶來(lái)的提升是相當(dāng)顯著的。
2 數(shù)據(jù)連接驅(qū)動(dòng)的緩存。
諸如PHP的ADODB,J2EE的連接驅(qū)動(dòng),甚至如果把HIbernate等ORM也看成連接器的話(huà)。這里的緩存有效機(jī)制就不是那么強(qiáng)了,使用此步的方法實(shí)現(xiàn)緩存的一個(gè)最好的優(yōu)點(diǎn)就是我們?nèi)?shù)據(jù)的方式可以保持不變。例如,我調(diào)用
$db->CacheGetAll("select * from table"); 的語(yǔ)句不需要改變,可以透明實(shí)現(xiàn)緩存。這主要應(yīng)用于一些變化不大的數(shù)據(jù)上,例如一些數(shù)據(jù)字典是不經(jīng)常變化的。
3 系統(tǒng)級(jí)的緩存
可以在系統(tǒng)內(nèi)通過(guò)Cache庫(kù),自行對(duì)需要的數(shù)據(jù)進(jìn)行緩存,例如一個(gè)樹(shù)樁菜單生成十分消耗資源,那可以將這個(gè)生成的樹(shù)緩存起來(lái)。這樣做的缺點(diǎn)是,當(dāng)這顆樹(shù)的某些地方被更新時(shí),你需要手動(dòng)更新緩存內(nèi)的東西。使用的緩存庫(kù)都可以有不同的緩存方法,有的把內(nèi)容放在硬盤(pán)上,有的放在內(nèi)存里面,如果你把內(nèi)容模擬成硬盤(pán)來(lái)緩存,速度當(dāng)然也能提升不少。
4 頁(yè)面級(jí)的緩存
這個(gè)在內(nèi)容管理系統(tǒng)里面用的最多。也就是生成靜態(tài)頁(yè)面。這里面緩存控制機(jī)制最為復(fù)雜,一般也沒(méi)有什么包治百病的方法,只有具體情況具體分析。通常生成的靜態(tài)葉面你需要有一個(gè)機(jī)制去刪除過(guò)時(shí)的,或訪問(wèn)很少的葉面,以保證檢索靜態(tài)葉面的速度。
5 使用預(yù)編譯葉面和加載為FastCGI的辦法
對(duì)于PHP,可以使用zend等編譯引擎,對(duì)于JSP本身就是預(yù)編譯。而FastCGI的原理就是將腳本預(yù)先加載起來(lái),不用每次執(zhí)行都去讀,這和JSP預(yù)編成Servlet,然后加載的道理是一樣的。
6 前置緩存
可以使用Squid作為Web服務(wù)器的前置緩存。
7 做集群
對(duì)數(shù)據(jù)庫(kù)作集群,對(duì)web服務(wù)器作集群,對(duì)Squild前置機(jī)做集群。
對(duì)于新手來(lái)說(shuō),如果你的程序要是恰死,首先你要檢查代碼是否有錯(cuò)誤,是否存在內(nèi)存泄漏,如果都沒(méi)有,那么通常問(wèn)題出在數(shù)據(jù)庫(kù)連接上面。
綜合應(yīng)用上面的緩存方法,開(kāi)發(fā)高負(fù)載的Web應(yīng)用成就很容易了。
分享:加速動(dòng)態(tài)網(wǎng)站 MySQL索引分析和優(yōu)化本文主要講述了如何加速動(dòng)態(tài)網(wǎng)站的MySQL索引分析和優(yōu)化。 一、什么是索引? 索引用來(lái)快速地尋找那些具有特定值的記錄,所有MySQL索引都以B-樹(shù)的形式保存。如果沒(méi)有索引,執(zhí)行查詢(xún)時(shí)MySQL
- 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獲取客戶(hù)端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
PHP教程Rss訂閱編程教程搜索
PHP教程推薦
- 用動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)PHP打造個(gè)人網(wǎng)站全攻略
- 基于PHP靜態(tài)類(lèi)的原罪詳解
- 加速動(dòng)態(tài)網(wǎng)站 MySQL索引分析和優(yōu)化
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- 解析php二分法查找數(shù)組是否包含某一元素
- Apache服務(wù)器無(wú)法使用的解決方法
- php定時(shí)計(jì)劃任務(wù)的實(shí)現(xiàn)方法
- 如何使用php判斷服務(wù)器是否是HTTPS連接
- PHP中使用XML-RPC構(gòu)造Web Service簡(jiǎn)單入門(mén)
- 解析PHP繪制3D圖形之自定義圖形及矢量圖
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-七種緩存使用武器 為網(wǎng)站應(yīng)用和訪問(wèn)加速
。