我的應用程式生成 20 個內容專案的頁面,其中可能包括當前用戶和其他用戶喜歡的專案。我使用 Firebase 實時資料庫來跟蹤喜歡的內容,但內容存盤在其他地方并且頁面是服務器呈現的,因此每次都會提供一個全新的頁面。我需要識別和標記喜歡的專案并實時顯示每個專案的狀態:
- 它的點贊數,以及
- 當前用戶是否喜歡過。
為了實時獲得喜歡的數量,我使用這個函式回圈遍歷專案,修改自Firebase Friendlypix 演示:
function registerForLikesCount(postId, likesCallback=null) {
const likedRef = firebase.database().ref(`/liked/${postId}`);
likedRef.on("value", function(snapshot) {
if (snapshot.val()) {
likesCallback(snapshot.val().count);
}
});
}
這是每個頁面的 20 個呼叫加上一個事件監聽器被設定,對嗎?它很快,但我不知道成本。什么資源用于所有這些偵聽器 a) 如果什么也沒有發生,或者 b) 如果一個贊被注冊并傳輸到 100 個并發用戶?
為了跟蹤當前登錄用戶是否喜歡任何專案,我嘗試了兩種方法:
對于每個頁面,從他們的 Firebase 節點獲取用戶的贊。這是對 Firebase 的一次呼叫,可能會獲取幾十個 ID(不是更多),并在上述回圈中檢查是否包含任何 ID。
或者,使用來自 Friendlypix 的片段,再呼叫 20 次 Firebase:
function registerToUserLike(postId, callback) {
// Load and listen to new Likes.
const likesRef = firebase.database().ref(`likes/${postId}/${firebase.auth().currentUser.uid}`);
likesRef.on('value', (data) => callback(!!data.val()));
}
registerToUserLike 具有保持用戶打開的任何選項卡或設備更新并展示實時魔力的優勢,但價格是多少?
我想了解此活動消耗了哪些資源,以便估算運行我的應用程式的成本。
uj5u.com熱心網友回復:
Firebase 協議對所有這些偵聽器的開銷很小,每個偵聽器都將其想要偵聽的路徑發送到服務器(對于 Firebase 而言不是付費操作,但您的移動提供商可能會收取帶寬費用),然后從該路徑接收資料它偵聽并更新該路徑上的資料。
呼叫數量在這里并不是成本的重要組成部分,因此降低成本的唯一方法是收聽更少的資料。簡而言之:在 Firebase 中有 20 個呼叫偵聽 1 個節點或 1 個呼叫偵聽 20 個節點都無關緊要。
有關原因的更多資訊,請參閱我對有關使用查詢加速為我的社交網路應用程式獲取帖子的問題的回答,而不是重復觀察單個事件
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/380979.html
上一篇:getAuth()回傳一個物件,但頁面重新加載時uid回傳null
下一篇:顫振 火力 條紋
