2016-08-27 55 views
1

Meteor-JS支持離線存儲/緩存嗎?Meteor-JS支持離線存儲/緩存嗎?

從我讀什麼:https://guide.meteor.com/collections.html

相反,在客戶端上,一個集合是 數據庫的客戶端緩存。這要歸功於Minimongo庫 - 一個 內存中的所有JS,實現了MongoDB API。

內存部分似乎無效脫機工作。我錯了嗎?

編輯:通過「離線」我的意思是儘可能多的那些特質:

  • 負載的應用,即使沒有互聯網連接,顯示用戶的數據
  • 使離線編輯,後來它們同步,即使離線爲例如小時
  • 加載應用程序時,在離線狀態下還未同步編輯也應該顯示

EDIT2:我想在適當的期限將是離線第一

回答

1

對於關於Minimongo的「內存中」部分的擔憂,您是對的。但是在離線設備上,這並不像看起來那麼糟糕:只要應用程序保存在內存中(即,如果通過瀏覽器打開,則坐在標籤中,或者如果打開Cordova打包的應用程序,則不會強制關閉),你的Minimongo生活並保留你的數據。

但是,如果瀏覽器選項卡被關閉,或者Cordova應用程序帶出設備內存(即用戶強制它通過任務切換器/應用程序管理器關閉,或者Android缺少RAM並查找未使用的應用程序以關閉這也意味着回到主屏幕將您的應用程序保存在內存中),那麼您的Minimongo(及其數據)就會消失。

但也有一些軟件包可以處理該用例。請參閱How can Meteor apps work offline?

1

此功能不適用於」 t從盒子裏出來。即使您對客戶端進行了更改,它們也會反映到客戶端中,但一旦與服務器的連接建立,服務器數據將會覆蓋更改。

您將不得不手動推送數據。這樣做的一種方式是使用瀏覽器的本地存儲。您可以將數據保存在本地存儲中,並在連接建立後將其推入服務器,以使更改「永久」。

正如在評論中指出的那樣:Meteor會嘗試繼續調用該方法,直到重新建立連接使用Meteor.call,但是一旦該選項卡關閉,客戶端中的數據將丟失。因此,確保數據在選項卡關閉後存活,並將其存儲在本地存儲中。

+0

如果通過「Meteor.call」進行更改,實際上它們將反映在客戶端(樂觀UI)中,但實際上客戶端也會[繼續嘗試](https://guide.meteor。 com/methods.html#retries)將方法調用發送到服務器,直到它成功或應用程序關閉(並從Cordova的設備中取出內存)。 – ghybs

+0

當用戶關閉標籤並且輸入的數據將丟失時,它將停止嘗試。 – Ankit

+0

OP的觀點聽起來更像混合應用程序,而不是通過瀏覽器訪問。與瀏覽器選項卡相比,混合應用程序更少出現在設備內存中。 – ghybs