簡體   English   中英

用node.js socket.io代替AJAX

[英]node.js socket.io instead of AJAX

這個問題是關於提高速度和最小化空閑時間。

我的頁面之一需要2個數據庫調用。 第一個數據庫調用是關於快速操作的用戶數據的。 第二個數據庫調用是聚合管道調用,需要花費更多時間才能完成。

因此,只要第一個數據庫調用完成,我就渲染頁面。 然后使用AJAX調用執行第二個數據庫操作並將其顯示在頁面上。

問題-我知道socket.io的工作方式,但是可以執行以下操作:

  1. 瀏覽器請求頁面
  2. 服務器計算數據庫調用#1並發送響應
  3. 服務器繼續計算數據庫調用#2,並等待瀏覽器通過socket.io連接
  4. 瀏覽器呈現步驟2中的頁面,並使用socket.io連接到瀏覽器
  5. 服務器將數據庫調用#2的結果發送到瀏覽器。

我實現的是在執行#4的同時執行#3,因此可以最大限度地減少服務器空閑時間並優化用戶體驗。

感謝您的任何投入。

可以使用socket.io進行建議的操作,但是我看不出為什么要這樣做,因為用ajax調用代替webSocket可以提供相同的性能精簡,但是效率更高。 運作方式如下:

  1. 瀏覽器請求頁面
  2. 服務器計算數據庫調用#1並發送響應
  3. 服務器繼續計算數據庫調用#2
  4. 服務器完成數據庫調用#2后,結果將臨時緩存到特定的客戶端。
  5. 同時,瀏覽器獲取首頁HTML並將其呈現
  6. 然后,網頁啟動Ajax調用以請求調用#2的結果
  7. 服務器將先前緩存的結果作為Ajax響應返回,然后清除緩存
  8. 客戶端收到Ajax響應並進行處理

因為不需要持續連接的客戶端和服務器,並且因為簡單的Ajax請求/響應比創建webSocket更為有效,所以在我看來,Ajax調用比為單個數據設置webSocket效率更高。 。

但是,您概述的webSocket機制肯定可以工作(在支持webSocket的瀏覽器中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM