目前我們有一個基於各種獲取參數創建XML頁面的服務。 隨着參數數量的增加,不同組合的數量也在增加,這意味着我們的清漆緩存中的命中率已經下降。 我們已經增加了TTL,因此命中率有所增加,但是我正在玩弄以下想法:邊緣限制包含在一頁內?
我剛剛遇到了Edge Side Includes,並且正在想.. 如果我生成的XML頁面包含50元素,我可以生成一個包含50個ESI(s)的頁面,然後將這些清漆合併成一個文檔?
爲什麼選擇50個ESI元素?由於每個XML元素本身都很容易被一個URL緩存,但是這些過濾器的組合會導致生成大量不同的完整XML文檔。因此,即使有一個請求過濾掉了前10個XML元素(因爲它們沒有向get params確認),因爲使用ESIs,每個元素都將從緩存中獲取。
這將在服務器上有多沉重?這樣做有意義嗎? ESI是非常昂貴的,在這種情況下,它是沒有意義的。
更新
首先,我們從來沒有用完的內存和核彈是零。我們目前的命中率爲0,4,時間爲4小時,這在我看來是糟糕的...由於所有這些組合(國家,地區等)。更糟糕的是,tomcat的使用率已經達到100%,而清漆停留在研究的1-3%。我的直覺告訴我們,用清漆縫合ESI,記住這些子文檔將更好地保護tomcat並提高我們的容量。我們從來不需要奇怪地使用Nuke項目,這意味着在高速緩存條目到期之前永遠不會填滿〜1GB高速緩存。我確定如果我們緩存每個子文檔,我們可能會達到內存限制,並開始nuking項目...但不清漆使用某種最近最少使用的算法?
你可能會發現你正在尋找從http://stackoverflow.com/questions/5960598/varnish-and-esi-how-is-the-performance – Ketola
葉,那正是那種事情的答案我正在尋找。謝謝! –