2011-11-09 64 views
4

我們在我們的網站上使用了多個跟蹤像素來收集有關我們訪問者的統計信息。但是,我們嵌入代碼的那些第三方JavaScript通常會等待來自其服務器的響應。通常他們的服務器沒有正確響應,因此會導致錯誤消息以及及時呈現網站HTML元素的問題,這會導致巨大的性能問題。檢測並終止緩慢的第三方javascript請求

有沒有一種方法可以檢測到第三方javascript在所需時間內沒有返回,因此我們可以以某種方式終止對其服務器的調用並繼續執行下一行代碼?請注意,使用JQuery.delay()並不是真正解決這個問題的方法。

處理從服務器返回的錯誤消息,我們可以使用嘗試& Catch(錯誤),但我不知道我們如何強制終止向外部服務器的JavaScript調用。

+1

9個問​​題 - 0接受的答案。請在您之前的問題中接受答案。 – epascarello

回答

2

您可以使用緩存,而不是加載腳本:

var scriptTag = document.createElement("script"); 
scriptTag.type = "text/cache"; 
scriptTag.src = "http://thirdparty.com/foo.js"; 
scriptTag.onreadystatechange = scriptTag.onload = function() { 
    if (scriptTag.readyState == "loaded" || scriptTag.readyState == "complete") 
    { 
     // it's done loading 
    } 
} 

這將導致該腳本中的圖像等的背景負荷;你可以直接打電話給他們,如果他們加載。需要注意的是,如果您有幾次超時,它可能會消耗所有可用的傳出連接。如果您僅序列化第三方Javascript,則最多隻能使用一個連接。

這是head.js使用的技術。你可能只需要使用head.js,但是你可能想添加一些額外的邏輯來處理超時等等。

+0

感謝您的回覆,我會嘗試一下,我會密切關注head.js – partizan