2015-10-15 112 views
3

我正在研究從API提供程序接收數據的網絡應用程序。現在我需要一種緩存數據的方式來保存再次調用提供程序以獲取相同的數據。瞭解網頁緩存(Redis)

然後我偶然發現了Redis,它似乎能夠達到我的目的,但我並沒有100%清楚使用Redis進行緩存的概念。我檢查了他們的文檔,但我沒有真正遵循他們的說法。

讓我們假設我剛剛部署了我的網站,並且我的第一個訪問者名爲A.由於A是第一個訪問的人,我的網站將通過API提供商請求一組新的數據,幾秒鐘後,該頁面將加載A想要的數據。

我的網站將這些數據緩存到Redis中,以便爲未來訪問者提供服務,以便訪問同一頁面。

現在我有我的第二個客人B.

乙擊中同一個頁面URL作爲和做,因爲我的網站有存儲在緩存中這個數據,B從緩存中,將體驗更快的加載時間比A經歷的要多。

我的理解是否符合網頁緩存的概念?

我一直以爲每個用戶的緩存思想,所以我在網站上的互動對其他人沒有任何影響或任何其他人,但Redis似乎每個應用程序的基礎上工作。

回答

4

是的,您對網頁緩存的理解是現成的,但它可以變得更復雜,這取決於您的使用情況。 Redis本質上是一個關鍵價值商店。所以,如果你想要的應用程序級緩存,您的理論鍵/值對是這樣的:

key: /path/to/my/page 
value: <html><...whatever...></html> 

如果希望用戶級別的緩存,你的理論鍵只會略有變化:

key: visitorA|/path/to/my/page 
value: <html><...whatever...></html> 

有意義嗎?本質上,定義用戶的關鍵字中會有一個標籤(但它通常是一個散列或其他東西,而不是純文本字符串)。

有一些redis客戶端庫是爲不同的web開發框架和內容管理系統編寫的,它們將定義它們如何處理緩存(即用戶特定或特定於應用程序)。如果您正在編寫自定義的Web應用程序,那麼您可以選擇應用程序級別的緩存或用戶級別的緩存,並執行其他所需的緩存操作。

+0

感謝您花時間解釋這一點。它幫助了很多。應用程序緩存是否更適合Web的常見選擇?這些選擇的優缺點是什麼? –

+0

我猜想應用程序級緩存更爲常見,因爲它通常會提供比用戶級緩存更好的性能改進。用戶級高速緩存實際上只有在同一用戶反覆使用相同的資源密集型頁面時纔有效。應用程序級緩存簡單易行,並且您可以獲得顯着的緩存優勢(因爲所有用戶都受益);但用戶之間的內容不盡相同,您必須下降到用戶級緩存。您也可以按頁面緩存,其中一些div爲所有用戶緩存,而另一些則是用戶特定的。希望有所幫助! –

+0

還有其他類型的緩存可以加快速度。例如,PHP具有APC緩存,這是代碼本身的字節碼級緩存,可以輕鬆減少延遲一半,同時允許用戶特定的體驗。真的很容易使用,還有一堆其他人在那裏。 –