Мъчително бавен AJAX с IE6

Заглавието, сигурен съм, ще провокира реакцията „ето ни отново...“ сред много читатели. Извинения. Потърсих в Google този проблем и получих телефонния указател. Най-вече по отношение на SSL, трябва да се каже. Други посочват ужасния JS двигател в IE. Нито едно от изказванията в интернет, които открих, не отговори наистина задоволително за мен. Затова реших да публикувам тук...

Създавам уеб приложение, разработено предимно във Firefox (заради Firebug), тествано в Opera, Chrome, Safari и... IE. Много jQuery, много AJAX. Уеб сървърът е Apache на Win XP. Отговорът на браузъра обикновено е светкавично бърз (уеб сървърът е в LAN и не прави нищо друго), с изключение на IE, който е МЪЧИТЕЛНО бавен.

Моят код обикновено е структуриран по следния начин:

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

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

Това означава, че JS кодът за module1 е известен на браузъра от думата "go", въпреки че бих очаквал, че компилирането на този код е отложено във всички браузъри, докато всъщност не извикам затварянето на module1(), което следва само при успешен натоварване(). Следователно мога лесно да повярвам, че бавен JS двигател, какъвто може да присъства в IE, ще доведе до плъзгане (за показване на div1). Въпреки това...

Това, което забелязвам е, че докато IE6 зарежда късно моите HTML фрагменти и всички съпътстващи компоненти (предимно изображения), когато изтегля друг браузър (за да мине времето) и заредя сайта си, този браузър ще виси до момента, в който IE завършва изтеглянето. Тоест, IE напълно затрива моя Apache сървър за всички останали.

Това ме кара да мисля, че това не е основно проблем с бавно JS интерпретиране. Че всъщност може да има проблеми с ръкостискането между Apache и IE. Нямам доказателства за това в регистрационните файлове на Apache, затова реших да попитам.

Някой има ли идеи? Има ли (известен) проблем с конфигурацията на Apache?

PS: Бих могъл да добавя, че по време на тези продължителни усилия за късно зареждане лентата на състоянието на IE - която според мен е ненадежден индикатор за напредък - доста често показва URL адреси към моите икони (т.е. много малки .gif и .png файлове).


person Ollie2893    schedule 15.08.2010    source източник
comment
Работи ли уеб сървърът локално, където зареждате уеб страницата?   -  person Yves M.    schedule 15.08.2010
comment
В LAN, да, не на клиента, който изпълнява браузъра(ите).   -  person Ollie2893    schedule 15.08.2010
comment
каква част от вашия потребител всъщност използва IE6? Това, което имам предвид е: това наистина ли си струва да се коригира (като знаем, че най-вероятно е проблем в IE6 и няма да можете да направите много по въпроса?).   -  person nico    schedule 15.08.2010
comment
Това е отличен въпрос. Бях толкова хакнат вчера, когато забелязах, че моите модални диалози са затрупани в IE6 от SELECT тагове, още един от безброй известни проблеми с IE, че проклех, че това е - ще прекратя поддръжката за IE6. Проблемът е, че когато проучих този проблем, се оказа, че IE7 очевидно е също толкова лош. Ако зависеше от мен, честно казано, щях да кажа на всеки потребител да си вземе приличен браузър и да хвърли IE в най-близката битова кофа. В реалния живот и двамата знаем, че всеки немислещ потребител има една версия на IE или друга...   -  person Ollie2893    schedule 15.08.2010
comment
Също така съм леко неубеден, че това е проблем на IE клиент сам по себе си, поради начина, по който другите браузъри висят. По-загрижен съм, че M$ са направили нещо с IE6/7/8, което може да доведе до превъзходни резултати при ръкостискане с IIS, но обърква Apache. Това наистина е основната ми причина да питам.   -  person Ollie2893    schedule 15.08.2010
comment
Вашите подозрения е много малко вероятно да се окажат верни. Имам опит с голямо уеб приложение, обслужвано от Apache (както и безброй други, разбира се) и то обслужва IE6 съвсем добре, без мистериозни увисвания. Силно се съмнявам, че може да има такива проблеми, без това да е добре известно. В крайна сметка IE6 не съществува от почти десет години.   -  person Pointy    schedule 15.08.2010
comment
Виждал съм обаче забавяне на IE6 с AJAX, макар и не толкова масивно, колкото казвате (но може би вашето приложение е много по-тежко от AJAX). Какво се случва, ако се опитате да деактивирате JS? Все още бавен?   -  person nico    schedule 15.08.2010


Отговори (1)


След като наскоро работих с IE6, може би мога да посоча едно нещо, което ни помогна. Прегледахме доста целия jQuery код, за да добавим много (наистина много) от:

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

Това принуждава пребоядисване на събития в IE6 (някакво ново изпълнение env с пребоядисване, ако разбирам добре IE6 js) и поне потребителят може да види части от страницата, които вече са заредени. Много полезно при зареждане на обратни извиквания. Така че поне възприятието на потребителите е по-добро, появяват се блокове от страницата и възприятието на потребителите за скоростта е по-добро. Но изглежда, че цялото реално време също беше по-добро.

Относно IE6 apache взаимодействията, тъй като вашият apache сървър не е на вашия компютър, а в LAN, трябва да опитате да:

  • тествайте уебсайта от друга машина, а не тази, на която работи IE6 (работи трудно)
  • активирайте mod_status и проверете url /status, за да видите дали няколко работници се използват от IE6 или само един

IE6 може би има проблеми с Keepliave заявките или с ограничения на броя на паралелните заявки, които може да изпълнява на един сървър. Но за това ще ни е необходима повече информация за HTTP трафика, когато възникне проблемът (а състоянието на сървъра поне е добро, проверете и Разширено състояние).

person regilero    schedule 11.01.2011