2009-12-02 158 views
2

我正在製作一個應用程序,它在畫布上繪製了很多小部件和切片。核心用戶界面將由一串長長的字符定義,並在頁面加載時由javascript進行繪製。由於該核心界面很大,> 250K,並且永遠不會改變,所以緩存該界面的好方法是什麼?Javascript緩存問題

我知道我可以只把它貼在該文件的頂部的變量,但有一個更有效的方法?如果寫這樣的:

變種IMG =新的圖片(); img.src ='moose.png'

我假定瀏覽器會下載並緩存這張圖片,以便在後續的請求中它不會再次打到我的服務器。但是我怎麼用一大塊文字來做呢?

編輯:基本上我正在尋找一個替代方式:

VAR myUI = 「AAAABBBCBVBVNCNDGAGAGABVBVB ....等約20頁」;
+0

您使用哪種服務器技術? PHP,Ruby on Rails? – 2009-12-02 20:57:49

+0

這個文件由PHP生成,但重要嗎?我正在談論客戶端緩存一個非常長的字符串。 – LoveMeSomeCode 2009-12-02 21:04:19

回答

2

您可以創建一個包含文本字符串的JavaScript文件。

var text='.....'; 

然後,你可以包括腳本:

<script src="/ui.initialization.js" type="text/javascript"></script> 

隨後的JavaScript您使用任何其他呈現UI。瀏覽器將緩存js文件。

編輯

我假設你不是讓文字內嵌的長字符串。通過將它移動到一個單獨的文件,您允許瀏覽器緩存它(如果它真的是靜態的您的服務器配置了適當的緩存控制靜態資源)。

下面是一些information for tweaking caching on Apache(我假設你在Apache上運行PHP)。

+0

謝謝,正是我一直在尋找的東西! – LoveMeSomeCode 2009-12-02 22:12:14

+0

這是如何工作的?爲什麼瀏覽器緩存JS文件,如果它看到第一行。有人可以給這個鏈接嗎? – Manish 2011-01-30 06:42:09

0

大多數靜態資源緩存能夠通過瀏覽器。只需將您的數據放入.txt,.dat,.xml或其他任何文件(甚至是.js)中,並通過AJAX將其加載到您的JavaScript中即可。

+0

所以你說的就像一個JS包括?你能舉個例子嗎? – LoveMeSomeCode 2009-12-02 21:03:15

+0

@LoveMeSomeCode:heh,「JS include」是''標籤本身。如果您使用@ Peter的其他文件建議(如.txt,.dat,.xml等),您只需要AJAX。 – 2009-12-02 21:15:37

0

時間下載250K超過1Mbps以上吞吐什麼是<1秒..這是你的問題?

而你正在下載的那個包含那個帶有250K行李的JavaScript的文件將會被自己緩存,可能。

0

您可以使用谷歌齒輪或新的HTML 5數據存儲功能,由FF 3.5和其他支持。

0

使用谷歌網頁速度YSlow的找出你可以做什麼其他的(HTTP)的改進措施。