簡體   English   中英

使用IE6令人難以忍受的緩慢AJAX

[英]Excruciatingly slow AJAX with IE6

我敢肯定,這個頭銜會激起許多讀者的“我們再來......”的反應。 道歉。 我用Google搜索了這個問題並得到了電話簿。 主要是關於SSL,必須說。 其他人指出IE中可怕的JS引擎。 我找到的互聯網咆哮都沒有給我帶來滿意的答復。 所以我想我會在這里發帖......

我正在構建一個Web應用程序,主要是在Firefox中開發的(因為Firebug),在Opera,Chrome,Safari和IE中進行了測試。 很多jQuery,很多AJAX。 Web服務器是Win XP上的Apache。 瀏覽器響應通常非常快(網絡服務器在局域網上沒有其他任何東西),IE除外,它的速度非常慢。

我的代碼通常按以下方式構建:

module1= function() {
    // JS code backing html in div1
};

$div1.load("div1.html",function() {
    module1();
});

也就是說,模塊1的JS代碼是瀏覽器從單詞“go”中知道的,雖然我希望在所有瀏覽器中推遲編譯此代碼,直到我實際調用module1()閉包,這只是在成功之后加載()。 因此,我可以很容易地相信,IE中可能存在的慢速JS引擎會產生阻力(顯示div1)。 然而...

我注意到,雖然IE6會延遲加載我的HTML代碼段和所有附帶組件(主要是圖像),當我啟動另一個瀏覽器(以節省時間)並加載我的網站時,該瀏覽器將一直掛起,直到IE完成下載。 也就是說,IE完全破壞了我的Apache服務器。

這讓我覺得這主要不是一個緩慢的JS解釋問題。 事實上,Apache和IE之間可能存在一些握手問題。 我在Apache的日志中沒有這方面的證據,因此我想我會問。

有沒有人有任何想法? Apache上是否存在(已知)配置問題?

PS:我可能會補充一點,在這些拖延的后期加載過程中,IE的狀態欄 - 我相信,這是一個不可靠的進度指示器 - 經常顯示我的圖標的URL(即非常小的.gif和.png文件)。

最近與IE6一起工作,我可以指出一件對我們有幫助的事情。 我們回顧了所有jQuery代碼,以便添加很多(實際上很多):

SetTimeout(function() { <HERE TO REGULAR CODE WE HAD>,0});

這個強制重繪IE6上的事件(某些新的執行環境,如果我理解IE6 js,重新繪制),並且至少,用戶可以看到已加載的頁面部分。 在加載回調時非常有用。 因此,至少用戶感知更好,頁面的塊出現並且用戶對速度的感知更好。 但似乎整個實時也更好。

關於IE6 apache交互,因為你的apache服務器不在你的計算機上但在局域網上你應該嘗試:

  • 從另一台機器測試網站,而不是運行IE6的機器(運行困難)
  • 激活mod_status並檢查url / status以查看IE6是否使用了多個worker或只使用了一個

IE6可能存在Keepliave請求的問題,或者他可以在一台服務器上運行的並行查詢數量有限制。 但是為此我們在問題發生時需要有關HTTP流量的更多信息(並且服務器狀態至少是一個好的,也檢查擴展狀態)。

暫無
暫無

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

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