2011-02-09 111 views
1

我需要幫助爲客戶站點找到正確的緩存解決方案。目前的網站是centoOS,php,mysql,使用smarty模板的apache(我知道他們吸吮但由別人構建)。當前的模型/方法使用相當不錯的面向對象結構,但對於一些簡單的頁面函數,有很多查詢方法。我正在尋找嘗試找到某種緩存解決方案,但我是一個noob當涉及到這一點,不知道什麼是可用的,將適合當前的網站設置。需要一個php緩存建議

這是一個拍賣類型的網站,一次顯示一個頁面上有10個拍賣 - 每個拍賣的時間和當前出價通過每1秒返回json的ajax調用更新(這是一個像beezid這樣的一分錢拍賣網站.com所以每秒更新都是必要的)。正如您所看到的,如果網站獲得任何類型的流量,同時請求的數量可能會很大。很明顯,這些數據每秒都會改變,因爲返回的json數據具有更新後的拍賣時間,並且可能會更新每次拍賣的出價金額和出價用戶。

我想要的是能夠緩存給定的時間量的某些頁面或基於其他變化的變量。例如,內存緩存顯示10次拍賣的頁面,並且只在其中一次拍賣結束時更新該緩存副本。甚至上面的腳本每秒都會返回json字符串數據。如果我能夠將第一個請求緩存到內存中的此頁面,請從內存中提供以下請求,然後在1秒後重新緩存它,這可能會大大減少服務器負載。但我不知道這是否甚至可能,或者如果這樣做的開銷超過了任何請求負載節省。

我看着xcache一些,但我找不到一種方法,我可以在特定頁面上設置特定的緩存時間或基於其他變量?!?也許我錯過了一些東西,但是有沒有人對緩存方案提出建議,以滿足這些要求?

Mucho感謝您的任何輸入......

+1

Xcache是​​一個操作碼緩存。操作碼是PHP解釋器在你的代碼上的第一遍輸出。操作碼是實際在解釋器上運行的代碼。操作碼緩存不會幫助您緩存代碼的結果,只有您的代碼本身。 –

+0

Xcache也可以使用[XCacheApi](http://xcache.lighttpd.net/wiki/XcacheApi)存儲變量數據,它不僅僅是一個操作碼緩存。 – wimvds

+0

@Dan - 我猜想操作碼緩存做了什麼 - 這仍然可能有助於加快處理時間。然後看看xcacheapi(@wimvds),看起來interesteing和可能的解決方案,也許我會安裝,看看它是如何工作的。謝謝你的幫助! – Michael

回答

2

緩存可以使用許多方法完成。 Memcached想到適合你的任務。但是如果網站太繁忙,你可能會用盡內存。

當我做緩存時,我經常使用一個簡單的文件緩存,儘管它至少包含一個stat調用來確定緩存內容的新鮮度,但它仍然比調用sql服務器更快更好。

如果您必須調用sql服務器,那麼可能需要使用內存(堆)表來存儲大量預先計算的數據。這種技術沒有memcached更有效率,可能更少,但可以節省安裝memcached。

DC

+0

我會查看內存表。是memcached熊安裝?順便說一下,服務器有4個內存 - 現在只使用了大約250MB,所以我不記憶會是一個問題。 – Michael

+0

從我的理解來看,memcached相當簡單。只要你有機會訪問。 – DeveloperChris

1

Zend_Cache可以做你想做什麼,多了很多。它支持許多後端,包括xcache和memcache,並允許您緩存數據,完整頁面,部分頁面以及任何您可以想象的任何內容:p。

如果您想知道:您可以單獨使用Zend_Cache組件,您不必爲應用程序使用完整的Zend框架。

+0

感謝您的信息。我會更深入地看看zend_cache,我的印象是整個框架都需要包含在內。 – Michael