2016-04-30 37 views
2

我有一個常規場景,我從服務器獲取一些數據,然後將其與頁面吐出供以後使用,但是我在想什麼會是更好的存儲方式它。將數據存儲在頁面上供以後使用

通常我會做類似

<script> 
    window.myData = <?= json_encode($myBigData) ?>; 
</script> 

現在我會存儲在窗口對象,我可以從我的腳本訪問後來我的數據,但並不是要佔用雙倍的內存?數據將作爲文本一次存儲在頁面上,並且一次作爲DOM中的實際數據存儲,很可能不會多過兩次,但仍會佔用更多的內存,對吧?

是不是這樣的事情會是一個更好的選擇

<script> 
function getMyData() { 
    return <?= json_encode($myBigData) ?>; 
} 
</script> 

這樣的數據將只在頁面的文本進行存儲,然後我能把它當我需要的時候,做一些操作與它和JavaScript將GC GC它一旦完成它的業務,而不是第一種情況下,它會留在內存很久之前我需要它,很久後我用它,除非我手動取消它。

我想問我的邏輯是正確的還是隻是一些廢話,是否有任何實際的好處呢?

+0

嘗試處理API和[angular js](http://angularjs.org)代替:) – hassan

回答

0

從來沒有在全球範圍內懸掛大型物體。 使用大量內存,代碼根本不乾淨。你可以找到的只是缺點。

更好地在Web存儲器本地或會話存儲中存儲唯一標識符(ID可能?),並有方法在需要時從服務器檢索這些數據。 爲了不讓服務器一遍又一遍地執行相同的工作,您可以緩存響應,因此無論何時您嘗試從服務器獲取數據,都會從緩存中獲取數據,從而避免計算。

從MDN:

的sessionStorage維護每個給定的產地證明是可用於網頁會話期間單獨的存儲區域(只要瀏覽器是開放的,包括頁面重新加載和恢復)

localStorage做同樣的事情,但即使瀏覽器關閉並重新打開時仍然存在。

Web Storage API

在從這些前端持久性方法/ API來存儲在前端數據達到您的需求。

0

您是否考慮過使用像AngularJS這樣的技術以用戶可讀的形式呈現JSON數據?您可以使用pagination隨時限制屏幕上顯示的數據。

將數據從JSON來回轉換爲文本聽起來像是更值得的麻煩。如果存在(現在或將來)不需要呈現給用戶的數據,則無論如何您都需要爲它找到一個位置。用戶如何做一些小的改變,而不用做一個大的過程來保存整個事情,然後將其重新轉換爲文本?

相關問題