PHP快取技術

2021-06-20 14:17:31 字數 1415 閱讀 2329

**:

在大部份情況下我們的**都會使用資料庫作為站點資料儲存的容器。當你執行乙個sql查詢時,典型的處理過程是:連線資料庫->準備sql查詢->傳送查詢到資料庫->取得資料庫返回結果->關閉資料庫連線。但資料庫中有些資料是完全靜態的或不太經常變動的,快取系統會通過 把sql查詢的結果快取到乙個更快的儲存系統中儲存,從而避免頻繁運算元據庫而很大程度上提高了程式執行時間,而且快取查詢結果也允許你後期處理。

1. php快取技術之資料快取

這裡所說的資料快取是指資料庫查詢php快取機制,每次訪問頁面的時候,都會先檢測相應的快取資料是否存在,如果不存在,就連線資料庫,得到資料,並把查詢結果序列化後儲存到檔案中,以後同樣的查詢結果就直接從快取表或檔案中獲得。用的最廣的例子看discuz的搜尋功能,把結果id快取到乙個表中,下次搜尋相同關鍵字時先搜尋快取表。

舉個常用的方法,多表關聯的時候,把附表中的內容生成陣列儲存到主表的乙個欄位中,需要的時候陣列分解一下,這樣的好處是唯讀乙個表,壞處就是兩個資料同步會多不少步驟,資料庫永遠是瓶頸,用硬碟換速度,是這個的關鍵點。

2. php快取技術之頁面快取

每次訪問頁面的時候,都會先檢測相應的快取頁面檔案是否存在,如果不存在,就連線資料庫,得到資料,顯示頁面並同時生成快取頁面檔案,這樣下次訪問的時候頁面檔案就發揮作用了。(模板引擎和網上常見的一些快取類通常有此功能)

3. php快取技術之記憶體快取

在裡就不介紹了,不是本文所要討論的,只簡單提一下:

memcached是高效能的,分布式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提公升訪問速度。dbcached 是一款基於 memcached 和 nmdb 的分布式 key-value 資料庫記憶體快取系統。以上的快取技術雖然能很好的解決頻繁查詢資料庫的問題,但其缺點在在於資料無時效性。

4. php快取技術之時間觸發快取

檢查檔案是否存在並且時間戳小於設定的過期時間,如果檔案修改的時間戳比當前時間戳減去過期時間戳大,那麼就用快取,否則更新快取。設定時間內不去判斷資料是否要更新,過了設定時間再更新快取。以上只適合對時效性要求不高的情況下使用。

5. php快取技術之內容觸發快取

當插入資料或更新資料時,強制更新快取。在這裡我們可以看到,當有大量資料頻繁需要更新時,最後都要涉及磁碟讀寫操作。怎麼解決呢?我在日常專案中,通常並不快取所有內容,而是快取一部分 不經常變的內容來解決。但在大負荷的情況下,最好要用共享記憶體做快取系統。

到這裡php快取也許有點解決方案了,但其缺點是,因為每次請求仍然要經過php解析,在大負荷的情況下效率問題還是比效嚴重,在這種情況下,也許會用到靜態快取。

6. php快取技術之靜態快取

這裡所說的靜態快取是指html快取,html快取一般是無需判斷資料是否要更新的,因為通常在使用html的場合一般是不經常變動內容的頁面。資料更新的時候把html也強制更新一下就可以了。

除了上述快取手段外,還有一些伺服器端的快取方案,非**級的:

php快取技術

一 引論 php,一門最近幾年興起的web設計指令碼語言,由於它的強大和可伸縮性,近幾年來得到長足的發展,php相比傳統的asp 在速度上有絕對的優勢,想 mssql轉6萬條資料php如需要40秒,asp不下2分鐘.但是,由於 的資料越來越多,我們渴求能更快速的呼叫資料,不必要每次都從資料庫掉,我們...

PHP快取技術

一 引論 php,一門最近幾年興起的web設計指令碼語言,由於它的強大和可伸縮性,近幾年來得到長足的發展,php相比傳統的asp 在速度上有絕對的優勢,想mssql轉6萬條資料php如需要40秒,asp不下2分鐘.但是,由於 的資料越來越多,我們渴求能更快速的呼叫資料,不必要每次都從資料庫掉,我們可...

php快取技術

在web開發中用來應付高流量最有效的辦法就是用快取技術,能有效的提高伺服器負載效能,用空間換取時間 快取是指臨時檔案交換區,電腦把最常用的檔案從儲存器裡提出來臨時放在快取裡,就像把工具和材料搬上工作台一樣,這樣會比用時現去倉庫取更方便。因為快取往往使用的是ram 斷電即掉的非永久儲存 所以在忙完後還...