我開始使用Firestore。我已閱讀關於脫機數據持久性的文檔和教程,但我並不清楚Firestore是否再次下載數據(即使內容未被修改)。 例如,如果我有一個查詢結果每週更新一次,而且我不需要應用程序再次下載內容,直到做出更改,那麼編寫代碼的效率方面最好的方法是什麼? 謝謝!Firestore - 使用緩存直到在線內容更新
5
A
回答
0
你想使用「快照監聽器」 API來聽您的查詢: https://firebase.google.com/docs/firestore/query-data/listen#listen_to_multiple_documents_in_a_collection
下面是一些JavaScript爲例:
db.collection("cities").where("state", "==", "CA")
.onSnapshot(function(querySnapshot) {
var cities = [];
querySnapshot.forEach(function(doc) {
cities.push(doc.data().name);
});
console.log("Current cities in CA: ", cities.join(", "));
});
您將這個監聽器第一次公司的FireStore將訪問網絡將所有結果下載到您的查詢中,併爲您提供查詢快照,如您所期望的那樣。
如果您再次附加同一個偵聽器,並且您使用的是脫機持久性,則會立即使用緩存中的結果觸發偵聽器。這裏是你如何可以檢測,如果你的結果是從高速緩存或本地:
db.collection("cities").where("state", "==", "CA")
.onSnapshot({ includeQueryMetadataChanges: true }, function(snapshot) {
snapshot.docChanges.forEach(function(change) {
if (change.type === "added") {
console.log("New city: ", change.doc.data());
}
var source = snapshot.metadata.fromCache ? "local cache" : "server";
console.log("Data came from " + source);
});
});
後你會得到高速緩存的結果,公司的FireStore將與服務器檢查,看看是否有你的查詢結果的任何變化。如果是的話,你會得到另一個快照的變化。
如果您希望收到更改只(如果沒有文件改變,但snapshot.metadata.fromCache
變化爲例)包括元數據,你可以發出查詢時使用QueryListenOptions
: https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QueryListenOptions
相關問題
- 1. 緩存失效內容更新
- 2. HTML5更新離線緩存
- 3. 緩存內容
- 4. 無法使用alamofire獲取新內容(無法刷新緩存內容)
- 5. 使用PHP + MySQL緩存大量內容
- 6. ASP內容緩存
- 7. 緩存數據,直到更改
- 8. 在WordPress中使用Ajax更新內容
- 9. 緩存,避免緩存內容
- 10. 如何通過使用Http緩存控制保存firestore請求?
- 11. 由於緩存原因,內容未更新
- 12. 更新緩存的rx java observables數據(使用嵌套緩存!)
- 13. Android:有沒有辦法在離線時緩存網頁內容?
- 14. 更新內容
- 15. 使用BeginInvoke掛起UI更新直到線程完成?
- 16. 靜態內容緩存
- 17. html iframe緩存的內容
- 18. 解碼Opera緩存內容
- 19. Smarty緩存(動態內容)
- 20. 緩存靜態內容
- 21. 返回內容直接從內存緩存 - Django的/ HTTP服務器
- 22. Firestore對象更新列表
- 23. SQL Server緩衝區緩存內容
- 24. Firestore - 檢查正在更新的文檔是否存在
- 25. 使用javascript更新div的內容
- 26. 使用will_paginate更新ajax內容
- 27. 使用加入更新狀態內容
- 28. 無法使用jquery更新iframe內容
- 29. 使用Frameworkelementfactory不更新按鈕內容
- 30. 使用jQuery動態更新DataTable內容