簡體   English   中英

如何在瀏覽器中確定和記錄遠程服務器的延遲

[英]How to determine and record latency of a remote server in the browser

相關於 如何通過瀏覽器確定遠程服務器的延遲

我試圖了解收集外部服務器http響應狀態代碼的可行性。

對於上下文:我正在將一個javascript庫加載到頁面上,該頁面被編寫為捕獲DOM元素值,然后將GET請求組裝到外部服務器以傳遞這些值以進行收集。 Google Analytics(分析)就是一個很好的例子,ga.js庫對頁面/瀏覽器中的數據值進行范圍划分,並向外部服務器上的跟蹤像素發出帶有大量查詢字符串名稱/值對和/或cookie值的圖像請求。 這是常見的活動,通常可以理解。

我要記錄的是外部收集服務器的響應/確認(為減少處理和/或數據收集的開銷,這可能僅限於響應不是200的情況)。 我的理解是,響應代碼僅在HTTP標頭中可用。 我什至不知道是否有可能以這種方式捕獲標頭響應。 我不清楚如何捕獲或以其他方式記錄這些響應代碼並使它們在瀏覽器中可用,以便后續的收集例程(可能是javascript庫)可以與出站服務器域一起收集這些代碼(例如,HOST:google-analytics .com狀態:413請求實體太大),並且還將這些收集的值發送到外部收集環境中。

作為一個額外的“不錯的選擇”,收集時間安排也將是有益的,但是我意識到這是一個明顯不同的問題。 發出請求時啟動計時器,通過返回瀏覽器的狀態碼確認請求后停止計時器,將其與數據一起發送:(主機:google-analytics.com狀態:413請求實體太大時間:283ms )。

如果使用ajax向遠程服務器發出請求以及遠程服務器的響應,則可以從XmlHTTPRequest對象獲取狀態代碼。 請求完成后, status屬性將為您提供http狀態代碼。

您可以使用jquery之類的東西來簡化事情。

警告:此示例代碼未經測試

 var startTime = new Date().value;

 $.get('http://example.com/some/path', { param1:'value1', param2:'value2'})
    .done(function(data, status, jqxhr) {
      var endTime = new Date().value;
      var elapsedMS = endTime - startTime;
      // handle your success things here
    })
    .error(function(jqXHR, textStatus, errorThrown ) {
      var endTime = new Date().value;
      var elapsedMS = endTime - startTime;
      // handle your failure here
      if (typeof console != 'undefined') {
        console.log('your url', jqXHR.status, textStatus, errorThrown);
      }
    })
    ;

注意:某些跨域ajax請求被阻止。 遠程服務器必須明確設置響應頭,以允許這些類型的請求。

暫無
暫無

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

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