2009-12-30 26 views
0

所以我實際上並不意味着瀏覽器使用GET方法緩存Ajax請求,而是在瀏覽器的內存中存儲大量查詢(任何數量,可能是兩位數的40 - 300kb查詢)。阿賈克斯「緩存」,好,壞,冷漠?

什麼是看不到的好處,與此相關的風險?

var response = JSON.parse(xhr.responseText); 
Cache.push(response); // Store parsed JSON object in global variable `Cache` 
// Time passes, stuff is done ... 
if(Cache[query]) 
    load(Cache[query]) 
else 
    Ajax(query, cache_results); 

回答

3

是否有實際需要?還是僅僅爲了優化?我建議先做一些剖析,看看瓶頸在哪裏。請記住,網頁會話通常不會持續那麼久,因此除非您使用某種離線存儲,否則緩存不會持續那麼長時間。

0

由於沒有系統的全貌就很難說,但我認爲,與陳舊數據可能發揮將是一個問題。

當然,如果你有一個解決「緩存新鮮度」的協議,你是在正確的軌道....但是,那麼,爲什麼不依靠HTTP協議來做到這一點? (HTTP GET與ETag /最後修改標題)

0

在存儲多個300kb字符串時,您可能需要對各種瀏覽器的內存使用情況和一般性能進行壓力測試。您可以在任務管理器中監控它們,也可以使用性能工具,如Speed Tracerdynatrace ajax edition

如果事實證明緩存是一個性能勝利,但當內存中的字符串太多時它開始陷入停滯狀態,您可能會考慮嘗試使用HTML5存儲或Flash存儲來存儲字符串 - 這樣您就可以在會話中緩存事物。 Dojo storage是一個很好的圖書館。