2013-10-10 50 views
57

我有一個存儲大量客戶端數據的問題,我無法決定哪種方式更好。現在我正在使用AngularJS的cacheFactory,它工作正常,但所有數據都會重新加載一個新的會話。是否值得使用本地存儲?

+0

你好,你可以使用webstorage然後你可以通過工廠獲取數據,http://www.w3schools.com/html/html5_webstorage.asp – schwertfisch

+0

是的本地存儲允許你存儲數據而不關心會話。我還建議查看https://parse.com/,以便將數據保存在雲中而不是服務器上。 – Rohit

+1

我結束了與https://github.com/gsklee/ngStorage去Angular-way:沒有Getter'n'Setter廢話! – mb21

回答

81

如果您的目標是存儲客戶端和持久數據,則不能使用僅緩存當前會話數據的$cacheFactory

一個解決方案是使用新的本地存儲API。 This awesome Angular module爲你做了所有骯髒的工作,甚至回到舊瀏覽器的cookies!

+1

是否存儲對象? – Rasalom

+1

不,你應該在對象存儲之前序列化對象(並且反序列化以讀取它們),通常使用JSON。但直接存儲對象並沒有多大意義,因爲所有持久存儲都是使用文件強制使用的,所以線性數據也是如此。 – Blackhole

+0

非常感謝:) – Rasalom

20

另一種解決方案是http://jmdobry.github.io/angular-cache/,它可以很好地與ngResource配合使用,並且可以很容易地配置爲同步到localStorage,所以請求不需要在頁面刷新後重新完成。

$resource('my/kewl/url/:key', { key: '@key' }, { 
 'get': { method: 'GET', 
      cache: $angularCacheFactory('MyKewlResourceCache', { 
              storageMode: 'localStorage' }) 
     } 
}); 
+0

我覺得這個比來自接受答案的解決方案更強大。感謝$資源在其官方網站中沒有看到 –

1

$ cacheFactory似乎是不明確您的解決方案,因爲黑洞說,高速緩存將在每次會話過期時間清零。 $ cacheFactory只是一個以角方式的memcache實現。

angular-cache只是一個輔助API,基本上它爲$ cacheFactory添加了選項,其中一個選項是將緩存存儲到持久性存儲(如localStorage)中。

所以,如果你想存儲在持久性存儲數據,你可以使用一個模塊可像angular-local-storage或使用$cookieStore但會創建餅乾...

+0

同樣,$ cacheFactory不緩存當前會話的數據,它將數據緩存在內存中,所以只要角度應用程序處於活動狀態即可。例如,頁面刷新會將其殺死。 @ user3305685你可以更新,請避免誤導人們? – tsemer