2009-08-06 68 views
1

只是好奇這是否可以緩存JavaScript?也就是說,爲了最大限度地減少每次刷新瀏覽器時重新計算一些邏輯所需的客戶端cpu?javascript無法緩存?

以google javascript地圖爲例。當我在頁面上顯示地圖時,是否有任何緩存機制可以在我的頁面上使用?

回答

2

客戶端可以在本地緩存.js文件(阻止其下載),但是該文件執行的操作是在每個負載上執行的。

至於谷歌地圖,它需要執行其操作來顯示地圖。其他然後讓客戶端緩存.js文件(從而節省下載),那麼你可以做的事情就不多了。

您可以做的最好的事情是限制客戶端需要處理的處理量,或者如果處理結果是標量(字符串,數字,數組),則可以將其存儲在cookie中供以後使用。 DOM操作在每個負載上完成。

儘可能在服務器上執行所有繁重的處理。

3

JavaScript執行會針對每個頁面加載進行。另一種方法是通過首先檢查在執行計算之前是否已經計算出該值,來改變JavaScript的調用方式。爲了實現這一點,您需要以某種形式的狀態(如會話,URL作爲查詢字符串參數)或cookie中存儲計算的值。這將確保首次加載頁面時,計算並存儲該值。對於每個後續頁面加載,該值將從狀態中拉出而不是重新計算。

1

你不能緩存編譯Javascript的結果,但是你可以避免在需要的時候加載你的應用程序邏輯部分 - 也就是說,在你需要一些邏輯的時候,添加一個新的<腳本>標記通過DOM獲取您需要的功能。

+0

可以舉例說明嗎? – cometta 2009-08-06 04:00:42

+0

GWT對這方面的內容有一些支持 - 請參閱http://googlewebtoolkit.blogspot.com/2008/11/improving-performance-with-on-demand.html和http://groups.google.com/group/谷歌的Web的工具包,提供者/ browse_thread /線程/ eb9c8cf046cbaaf2 – bdonlan 2009-08-06 04:05:40

0

我想你是在談論從JavaScript的加載的圖像,從谷歌的服務器?

對於每個細節級別都有一個巨大的圖像網格,並且在邏輯上不合理地緩存這些圖像。在谷歌地圖上滾動幾分鐘後,您將有足夠的圖像填滿您的硬盤幾次!

某些瀏覽器無法處理JavaScript以及其他人。 Firefox暫時落後,但Google Chrome和Safari都非常快。 Safari值得下載,因爲它的開發工具將告訴你到底發生了什麼事。