2012-03-26 79 views
0

據我知道這是不可能實現的追隨者,但是隻有專家可以證實這一點:緩存JavaScript文件的執行

我有頁碼1,對於一些用戶和應用程序數據的請求一旦頁面加載,第2頁使用相同的腳本,並且請求相同的信息將是浪費的。

我知道瀏覽器緩存腳本,我的問題是如果它緩存執行(數據)以及。

頁面不共享相同的佈局,所以不可能通過ajax重新加載頁碼2。

+1

瀏覽器不(但實際上不能)緩存結果;一般來說,這並沒有多大意義。但是,您可以將某些計算的結果放入Cookie或本地存儲在瀏覽器中。 – Pointy 2012-03-26 14:06:35

回答

2

瀏覽器不會自動緩存腳本的結果(這將是嚴重的怪異),但可以通過設置(和檢查)cookies,使用現代瀏覽器的新local storage stuff等注但是使用Cookie,它們會在每次請求時發送到服務器,因此會導致請求的大小增加;如果你可以使用本地存儲,那麼。

+1

我不會在這裏推薦cookie,因爲它們會在將來的每一個請求中傳輸。根據要存儲的數據的形狀,這可能會導致一些不必要的流量。 – Sirko 2012-03-26 14:11:17

+0

@Sirko:我想說我們沒有足夠的信息來知道他們是否是一個合適的選擇 - 但這是加強OP的好點。 – 2012-03-26 14:14:09

1

如果您使用某種類型的客戶端存儲,如localStorage(有關更多詳細信息,請參閱MDN docu),您可以「緩存」數據。

瀏覽器本身也可能會在內部緩存您的請求,因爲ajax請求與瀏覽器發出的任何其他請求(html文檔,圖像等)沒有區別。因此,根據您的確切請求(包括所有參數),瀏覽器可能實際使用緩存版本的請求以避免不必要的呼叫。然而,在這裏,通常的緩存限制和屬性適用,所以你可以而不是依靠這種行爲!

1

如果您的「頁面」是新的URL,瀏覽器將不會自動緩存您的數據。

但它肯定是可能爲你實現它在幾個方面 之一是在支持HTML5

新的瀏覽器使用本地存儲的另一個是寫你的應用程序,使得它具有多個視圖的單一頁面和轉換 使用AJAX替換頁面的部分(視圖)。

這種技術正變得越來越流行。

我強烈推薦閱讀Alex MacCaw的「Javascript Web Applications」來理解JavaScript MVC以及如何使用javascript創建客戶端(基於瀏覽器)的控制器,並在瀏覽器中查看和管理緩存,狀態等。另外,也要看看框架,如Backbone.js的

http://www.amazon.com/JavaScript-Web-Applications-Alex-MacCaw/dp/144930351X/ref=sr_1_1?s=books&ie=UTF8&qid=1332771002&sr=1-1

1

我會避免緩存中的數據,除非有嚴重的性能問題(和,然後,而不是消滅它緩存的性能問題)。這是premature optimization。當數據被緩存時,必須考慮所有類型的場景(陳舊的數據,刪除的數據)(除非數據是靜態的,但是不管怎麼說,它都是不相關的)。