2010-03-27 64 views
1

我已閱讀過關於400% boost of your website的這篇文章。這是通過nginx和memcached的組合完成的。這個網站的how-to部分是相當不錯的,但我錯誤的地方說它適用於什麼類型的網站。memcached加速什麼類型的網站

我知道nginx是一個http引擎,我不需要那個解釋。

我認爲memcached與緩存數據庫結果有關。不過,我不明白這與http請求有什麼關係,有人可以向我解釋這一點。

我的另一個問題是使用什麼類型的網站。我有一個網站,網站的重要部分由經常變化的數據組成。通常是分鐘。

這種方法仍然適用於我,或者我應該堅持apache的基本枯燥的設置,沒有別的。

回答

1

memcached是一個普通存儲器數據高速緩存。它可能最常用於緩存數據庫對象,但它可以完成大量的其他任務。

您鏈接的特定文章描述瞭如何使用nginx代替通常用於Rails Web框架的Mongrel httpd。 memcached用於緩存使用查詢字符串生成動態內容的動態頁面的結果;在這個特定的用例中,每次看起來頁面都會生成相同的查詢字符串,因此只需繞過應用服務器生成並在memcached中緩存呈現的HTML,就可以獲得顯着的性能提升。

儘管標題有些過分誇張,但文章沒有提供適用於所有(甚至大多數)動態網頁的用例。但是,如果您的網頁需要大量計算,並且所有用戶的參數都相同(公共搜索結果就是一個很好的例子),那麼此解決方案將會顯着提高性能。

+0

因此,如果我理解正確的每個單一的html字符的所需的網站必須是相同的。例如,每次用戶請求時,url http://mydomain.com/articles/get-some-article都必須相同。如果這篇文章發生快速變化,整個設置就沒用了。 – 2010-03-27 06:23:58

+0

沒錯。這是針對在調用之間根本不改變的頁面,只要參數相同即可。請注意,包含iframe中的廣告的頁面仍然可以使用此機制,因爲iframe代碼將是靜態的,但iframe加載的頁面可能會更改。 – 2010-03-27 07:50:36

1

從memcached的FAQ

增加memcached的支持,您的 應用程序可以是一個大量的工作。 MySQL有一個方便的查詢緩存功能 ,它會自動緩存你的SQL查詢的 結果,使得它們在重複運行時更快。如何 做memcached比較這個? MySQL的查詢緩存是集中式的,所以 的好處是所有連接到它的服務器 都可以看到。

  • MySQL的查詢緩存刷新只要您修改一個表。您可以存儲
    一個memcached的項目最少的時間 ,但如果你得到了很多的
    寫入流量,MySQL的查詢緩存
    將不斷到期的所有

  • MySQL的查詢緩存具有許多CPU的可擴展性問題。它增加了一個全局鎖定的
    , ,並且它變得更慢,因爲它需要刷新更多查詢,因爲它需要。

  • 您不能將任意數據對象存儲到緩存中。您可以使用
    memcached構建 更高效的緩存。運行幾個單獨的
    查詢來構建用戶對象,構建 用戶對象,然後緩存該對象。
    MySQL的查詢緩存可以幫助小型的
    網站,但在規模上可以做的更好,而不是更好的 。

  • 內存限於您的數據庫有多少備用RAM。這是
    好得多給你的數據庫的詳細 RAM緩存數據:)隨着memcached的
    你攤開集羣無論
    你有空閒的內存,這樣你就可以
    緩存更多。

+0

感謝您複製FAQ的這些部分。 Memcached有一些很好的功能。但是這仍然不能解釋問題中的文章可以應用於什麼類型的網站。在文章中,memcached與5分鐘的設置一起使用。我懷疑這是否會成爲現實。我已經閱讀過這些memcached的常見問題,並且知道設置起來並不那麼容易,這就是爲什麼我問這個問題到底是什麼文章描述的。 – 2010-03-27 06:20:22