PHP常見快取技術分析,讓重複的呼叫快取以加快速度

2022-02-02 14:13:44 字數 1731 閱讀 4373

**api在使用時,如果要呼叫相同的資料,比如一些類目 ,婁煩 ,簡介,不要每次都去呼叫 資料表,這樣會流彈速度,還有流量 ,

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

普遍使用的快取技術

資料快取:這裡所說的資料快取是指資料庫查詢快取,每次訪問頁面的時候,都會先檢測相應的快取資料是否存在,如果不存在,就連線資料庫,得到資料,並把查詢結果序列化後儲存到檔案

中,以後同樣的查詢結果就直接從快取檔案中獲得。

頁面快取:

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

記憶體快取:

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

memcached是高效能的,分布式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提公升訪問速度。

dbcached 是一款基於 memcached 和 nmdb 的分布式 key-value 資料庫記憶體快取系統。

以上的快取技術雖然能很好的解決頻繁查詢資料庫的問題,但其缺點在在於資料無時效性,下面我給出我在專案中常用的方法:

時間觸發快取:

檢查檔案是否存在並且時間戳小於設定的過期時間,如果檔案修改的時間戳比當前時間戳減去過期時間戳大,那麼就用快取,否則更新快取。

設定時間內不去判斷資料是否要更新,過了設定時間再更新快取。以上只適合對時效性要求不高的情況下使用 ,否則請看下面。

內容觸發快取:

當插入資料或更新資料時,強制更新快取。

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

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

靜態快取

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

流量規則 **開放平台beta期間,試執行的流量規則是每個api介面呼叫次數每天呼叫不能超過10000次。其中需要上行的資料介面:商品增加、update等需要提交資料的介面,一律每天上限5000次。 beta執行期間免費。有流量異常頻率異常的應用,**有權利隨時取消訪問權利。

頻率限制 **openapi每分鐘訪問的次數是有限制的,一般為400次/分鐘,即乙個應用訪問任何乙個**api,一分鐘內最多只能訪問400次。對於部分特殊的資料上傳型api,頻率另行限制。

違反頻率限制的應用將被記錄在案,有嚴重違規行為的應用將直接計入黑名單。

所以建議大家都做下快取,不論是有無限制做好快取也沒什麼壞處。

分析PHP中的快取技術

關於php的快取技術我個人的定義是可以分成3個類別1 快取模組這這個是在伺服器上做的快取設定,比如zend公司的cache產品等,主要原理是通過對php 檔案的一次編譯儲存在記憶體中,通過減少i o的操作來加快訪問速度,不在本文討論範圍之列2 html方式或許你說php生成html的方式不在本文討論...

php快取技術 php快取技術的多種實現方法

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

php快取技術 php快取技術的多種實現方法

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