2012-06-28 54 views
2

我正在尋找緩存數千個網頁的最佳解決方案。現在我正在使用平面文件,這種文件很好用,直到成千上萬的平面文件出現時,整個文件系統在訪問文件緩存(在OpenVZ下用EXT3在CentOS上運行)時會變慢(很多)。我想探索其他選項,如Redis或MongoDB作爲替代品,但它們會更快嗎?如果不是,最好的建議是什麼?對於成千上萬頁最快的PHP網頁緩存建議?

我的系統每個網站動態地創建超過40K頁,所以做一個內存緩存也是不可行的。

謝謝!

+2

「最好」是一個非常相對的術語。 –

+0

固態硬盤將是偉大的,但超出了價格範圍。不介意使用硬盤驅動器,但似乎一旦有很多文件,本機文件系統就會變慢,這就是爲什麼我對Mongo/Redis是如何使用如此大的緩存的更好解決方案感到好奇的原因? –

+0

好點Jared。將其更改爲「最快」。我希望人們知道我的意思是什麼;) –

回答

3

文件緩存很好,你只需要很聰明。我的目標是讓導演進入500人以下。與40K條目,只是哈希的網址和使用散列的前2個字節將給你255個文件夾,每個文件夾應平均包含約150個文件。

+0

我會試試這個。謝謝你和喬納斯有類似的答案(一定是最好的):) –

0

嗯,我知道StackExchange在CentOS上使用Redis,所以它應該會更好,從LAMP堆棧。 Redis似乎爲這種事情做了優化,而MongoDB更像是一個實際的數據庫。你也可以使用memcached。

0

我會建議將文件分散到子目錄中,可能按緩存文件名稱的md5散列的前兩個或三個字符(或者只是文件名的前兩個或五個字符)進行分組。這會消耗文件系統的一點負擔。

+0

我想到了這一點,但不知道它是否會改善。這是有道理的,並且對我來說很容易實現。這會比另一個人建議的Redis快嗎? –

+0

我不知道。這只是一個獨立的建議。 –

0

你看過使用類似清漆的東西嗎?根據你的緩存和失效的複雜程度,它可能適用於你。您將動態創建頁面並讓代理層處理任何重複的請求。

https://www.varnish-cache.org/