2011-05-06 121 views
9

嗨,這實際上是更多的信息請求。php緩存技術

我目前正在研究一個很大的事件列表網站,並開始考慮對正在使用的數據集進行一些緩存。

我跟APC本週被搞亂,並看到在測試過程中不過就是我努力讓我的頭有些真正的改善周圍是試圖頻繁改變的緩存數據時所需要的最佳實踐和技術。

例如說用戶點擊主頁,默認情況下顯示最近發生的10個事件,如果該用戶登錄那些事件,則是特定位置。是否有可能部署登錄時的狀態和頻繁改變數據處理時,某種緩存系統,該系統目前允許用戶「顯示更多的事件:這是從數據庫中拉額外的結果一個Ajax請求

我還沒有真正找到了這樣的事情是我不知道該怎麼尋找,但我真的想知道用於該處理尤其是改變用戶專用的數據和先進的數據緩存系統的技術?

我的意思是它甚至值得嗎?在處理這類標準時,其他性能助推器是什麼?

任何有關這方面的文章或提示和信息都會大大降低ciated!請讓我知道是否需要其他信息!

回答

6

你的基本的解決方案是:

  • 文件緩存
  • 的memcached/redis的
  • APC

每個使用略有不同的目標。

文件緩存通常是您可以預渲染文件或部分文件時使用的。它用於模板解決方案,部分視圖(mvc),css框架。那種東西。

Memcached和redis都差不多,除了redis更像是一個noSQL的東西。它們用於分佈式緩存(多個服務器,相同的緩存數據)和用於存儲會話,如果你有一組web服務器。

APC有兩個好處:操作碼緩存和數據緩存。然後memcached更快,但分別適用於每個服務器。


底線是:在一個巨大的項目中,您將使用它們全部。每個用於不同的任務。

+1

嘿謝謝你的答案,所以我想最好的開始就是確保數據庫已經充分發揮其潛力,從那裏開始工作我仍然無法得到我的頭是如何實現登錄的緩存技術例如,如果您登錄並且您來自倫敦,那麼您將如何執行緩存以獲取這些結果,而這些內容是特定於用戶的呢? – 2011-05-07 09:21:55

4

因此,你有操作碼緩存,它通過將已編譯的PHP文件保存在緩存中來加快速度。

然後你有數據緩存,在那裏你保存變量或需要時間來得到這樣從SQL查詢構建的數據對象。

然後你有輸出緩存,這就是您保存網頁的整個塊文件,並輸出這些文件,而不是建立在每個請求的網頁的該塊。

我曾經寫過一篇博客文章中有關如何執行輸出緩存:

http://www.spotlesswebdesign.com/blog.php?id=17

如果它的具體位置,並且有十億的位置,你最好的選擇可能是輸出緩存假設你有很多的磁盤空間,但是您將不得不使用自己的腦袋,因爲每種情況在如何最好地應用緩存方面都有很大的不同。

+0

輸出緩存這是不好的做法,緩存文件是最糟糕的緩存,可以使用。 – 2011-05-06 17:37:52

+0

@OZ_爲什麼這是不好的做法?如果你有一堆東西需要緩存,你將無法將所有內容緩存到內存中......光盤是下一個最好的東西。你有什麼要支持你的陳述嗎? – dqhendricks 2011-05-06 17:46:32

+0

OZ,爲什麼輸出緩存不好,特別是爲什麼緩存文件不好。如果不是一個文件,那麼在哪裏? – bejonbee 2011-05-06 17:47:21

2

如果做得對,使用memcached或類似的解決方案可以大大提高網站的性能。通過直接更改緩存的數據而不是將其從數據庫中重新水化,您可以完全忽略數據庫中的數據,這些數據不需要保存或可以輕鬆重建。由於數據庫通常是Web應用程序中最關鍵的組件,因此您可以將其卸載的任何負載都是一項獎勵。

在另一方面,確保你的數據庫查詢是輕,高效地將有比大多數高速緩存的調整對性能有更大的影響。