2010-09-29 141 views
3

在我的一些頁面中,我有「模板」。例如,我可能有一個表,並且我爲表中的每一行都有一個「模板」緩存客戶端上的html文件

<div class="wholeRow"><div class="lefCol"><!-- some stuff will go here --></div>... 

然後我用JS填寫這張表。這有點愚蠢,但用戶每次訪問頁面時都必須加載這個模板 - 我應該可以緩存它。

我不知道如何去緩存它雖然;我能想到的唯一的東西就是把它放在一個靜態的JavaScript文件中,並用document.write來包裝它,但這看起來很好,很愚蠢。有沒有人有其他想法?

+0

看我的解決方案:http://stackoverflow.com/questions/2326943/when-do-items-in-html5-local-storage-expire/17632458#17632458 – 2013-07-13 17:38:08

回答

1

如果它是一個在頁面加載之間不會動態改變的內容,它應該在服務器上生成,而不是由Javascript生成。如果它是一個動態內容,緩存它是沒有意義的。

我會先考慮你的應用程序設計,然後再考慮高級緩存。

緩存客戶端上的東西主要由瀏覽器處理(現在它們處理得相當好)。如果你想用的Javascript計算緩存結果,您有兩個存儲可能性:

  1. 餅乾
  2. HTML5 API,用於存儲JS數據

他們都不是完美的這個目的,沒有任何的他們被設計爲緩存。現在我會去Cookies,因爲這些廣泛支持。加載頁面後,只需檢查cookie是否存在,如果存在,只顯示其內容。否則使用JS生成它。

請注意 - 不要使用<div>表格數據。 <表>元素是爲此設計的。

+0

這似乎怪我;人們真的把HTML數據放入Cookie中嗎?這似乎很糟糕。我基本上必須手動控制緩存,而不是讓瀏覽器去做。另外:模板是靜態的,但是放在模板中的不是。我沒有把「結果計算由JavaScript」任何地方,我只是存儲一些HTML(這是由服務器生成)。 – Xodarap 2010-09-29 16:45:55

+0

然後你不必做任何事情。瀏覽器將緩存來自服務器的任何內容(通常)。我認爲「那我用JS填寫這張表。」意味着您使用某種JS計算來填充表中的數據,並希望使用填充的數據來緩存表。 – 2010-09-29 17:20:23

+0

我不認爲我很清楚。整個頁面是動態的 - 它不能被緩存。然而,頁面的部分*可以被緩存。如何緩存此頁面的某些部分?如果這些部分是js或css或圖像,我可以將它們放在具有緩存控制標題的單獨文件中。我怎樣才能做到這一點與HTML? – Xodarap 2010-09-29 17:36:43