首頁 培訓計劃 培訓課程 企業內訓 學員論壇 技術文章 成功案例 師資簡介 關于我們 在線留言  
行業新聞
Web應用緩存系統的分類

文章來源: 酷勤網收集 作者: 發布日期:2009-09-30
打 印】【關 閉

 目前Web應用的緩存方式多種多樣,有APC,File,SQLite,Memcache等等各種類庫實現著不同的緩存方式,如果單純按他們的性能高低對他們進行選擇,那將毫無意義,不但不會使你的應用加速,反而有可能給你帶來災難的后果,只有通過了解他們的實現方式,根據具體應用具體選擇,才會使緩存系統發揮出最大的性能。

  按照緩存系統存儲方式不同,可以將緩存系統分為基于內存的緩存與基于文件的緩存。

  PHP中,APC恐怕是最典型的基于內存的緩存,速度超級快,讀寫一個簡單的32字節的字符串,可以達到1000000次/秒,這樣的讀寫速度幾乎可以忽略掉由于引入了額外的緩存系統而帶來的性能消耗。

  而對于基于文件的緩存系統來說,ZendFramework有一個基于文件的后端緩存實現(File)比較典型,基于文件的緩存系統具體讀寫速度沒有做過評測,其性能由于受到磁盤IO的限制,所以遠遠不如內存型緩存速度來的快。

  基于內存、磁盤這兩種存儲方式的基礎上,通過存儲不同格式的文件,或者提供不同的訪問接口我們就可以實現不同的緩存系統了。例如最近非常流行的Memcache,就是在內存存儲的基礎上提供Socket的訪問方式。再例如MemcacheDB,就是在將存儲方式更改為磁盤文件,而訪問方式不變。

  按照緩存系統的可訪問范圍來分,又可以分為進程級緩存,單機緩存,分布式緩存。

  同樣的,APC同樣是進程級緩存的典型代表,一個PHP FastCGI主進程就會開啟一段APC SHM,并且與子進程共享,而多個PHP FastCGI主進程之間的APC SHM相互獨立,無法共享,這恐怕也是APC緩存的一大缺陷。

  文件型緩存則是單機緩存的代表,假如我們曾經將PHP的Session存儲在文件內,一定會遇到多個Web服務器共享緩存的問題,這正是受文件型緩存訪問范圍的限制導致的。

  分布式緩存系統則以Memcache為代表,他提供一個基于Socket的訪問方式,使得該緩存系統支持遠程讀寫訪問。盡管這個緩存的內容可能是存在內存中,也可能是存在文件內。

  其實話說回來,從本質上說,不同的緩存系統就是數據存儲方式的不同與數據讀寫方式的不同,不同的存儲方式與不同的讀寫方式的組合,造就了今天緩存系統百花齊放的場面,只有針對具體應用,判斷各個緩存系統優缺點以及局限性,才能選擇出最適合自己使用的緩存系統。

打 印】【關 閉

上一篇:子網掩碼教學
下一篇:IIS,連接數,進程數
相關新聞
版權所有©威課網 粵ICP備13058727號