第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

防止從 firebase 獲取數(shù)據(jù)的延遲時間

防止從 firebase 獲取數(shù)據(jù)的延遲時間

嗶嗶one 2022-01-07 19:05:37
筆記:firebase 的異步特性已經(jīng)在這里討論了數(shù)千次,但我的低聲譽(yù)數(shù)字不允許對現(xiàn)有問題發(fā)表評論。這就是我問這個問題的原因。我是菜鳥,所以請幫助我以易于理解的方式理解實現(xiàn)。實施步驟:用戶在 HTML 輸入框中輸入值在 firebase db 中搜索輸入值(調(diào)用 showMessage())根據(jù)步驟 2 中的搜索結(jié)果顯示適當(dāng)?shù)慕Y(jié)果面臨的問題:步驟 3 中顯示的消息平均需要 1.75 秒才能顯示。這種體驗對用戶不友好。我想盡快顯示消息,即想減少獲取時間??赡艿母驹颍何覐?firebase dB 獲取數(shù)據(jù)的方式不正確(我仍然不明白如何信守承諾 :()或者搜索和顯示的機(jī)制不對var full_name; function showMessage(){      extractData();    }function extractData(){     test(function(returnValue) {        custom_message = searchMessage(returnValue);        var container = document.querySelector('#placeholder');        var para = document.createElement('p');        var custom_message = "Happy happy, buds!";        para.innerHTML = custom_message;        para.className = "message";        container.appendChild(para);    });}function test(callback) {     var ref = firebase.database().ref();    ref.on('value', function(snapshot) {    var data = snapshot.val();    callback(data);   }, function (error) {       console.log("Error: " + error.code);    });}function searchMessage(data){    for(var i = 0; i < data.length; i++)    {        name_f_data = data[i].firstName.concat(" ", data[i].lastName);        if(full_name.toLowerCase() == name_f_data.toLowerCase())        {            console.log(name_f_data.toLowerCase());            console.log(full_name.toLowerCase());            return data[i].message;        }    }}
查看完整描述

1 回答

?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗 獲得超5個贊

讀取操作所需的時間取決于:

  1. 您連接到 Firebase 服務(wù)器的延遲

  2. 您正在讀取的數(shù)據(jù)量

  3. 您的連接帶寬

  4. Firebase 處理請求所需的時間

在大多數(shù)情況下,F(xiàn)irebase 所花費的時間只是總時間的很小一部分,而您的大部分時間實際上都花在了數(shù)據(jù)傳輸上,這完全取決于帶寬和數(shù)據(jù)量。如果這是您第一次在頁面中從 Firebase 讀取數(shù)據(jù),則延遲也更重要,因為 Firebase 必須建立連接,這需要幾次往返。

您當(dāng)前的代碼正在從數(shù)據(jù)庫中下載所有數(shù)據(jù),然后在 JavaScript 代碼中搜索與某個值匹配的子節(jié)點。減少所需時間的最佳方法(除了升級到快速連接)是傳輸更少的數(shù)據(jù),您可以使用 Firebase 的查詢機(jī)制在服務(wù)器上進(jìn)行過濾。

你可以非常接近:

var ref = firebase.database().ref();

var query = ref.orderByChild().startAt(firstName).endAt(firstName+"~");

query.once('value', function(snapshot) {

  var data = snapshot.val();

  callback(data);

這將顯著減少傳輸?shù)臄?shù)據(jù)量。不過有幾點注意事項:

  1. 該查詢僅返回具有您要查找的名字的人。它還沒有過濾姓氏,所以你仍然需要在客戶端代碼中過濾它。

  2. 為了進(jìn)一步優(yōu)化這一點,請將全名(您現(xiàn)在在客戶端代碼中編寫)存儲在數(shù)據(jù)庫中,以便您可以對其進(jìn)行查詢并進(jìn)一步減少數(shù)據(jù)傳輸。

  3. Firebase 查詢區(qū)分大小寫,因此查詢僅返回大小寫完全匹配的數(shù)據(jù)。如果要查詢不區(qū)分大小寫,請考慮toLowerCase()在數(shù)據(jù)庫中存儲一個值。

  4. 請務(wù)必在 上定義索引firstName,否則 Firebase 數(shù)據(jù)庫仍會將所有數(shù)據(jù)發(fā)送到客戶端,SDK 將在客戶端執(zhí)行過濾。


查看完整回答
反對 回復(fù) 2022-01-07
  • 1 回答
  • 0 關(guān)注
  • 248 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號