2010-08-15 5 views
4

Le titre, je suis sûr, va provoquer une réaction «on y va encore ...» avec de nombreux lecteurs. Excuses. J'ai googlé ce problème et j'ai eu l'annuaire téléphonique. Surtout en ce qui concerne SSL, il faut le dire. D'autres pointent vers le terrible moteur JS dans IE. Aucun des diatribes que j'ai trouvées sur Internet n'a vraiment répondu à cette question de façon satisfaisante pour moi. Donc je pensais que je posterais ici ...Incroyablement lent AJAX avec IE6

Je construis une application web, principalement développée dans Firefox (à cause de Firebug), testée dans Opera, Chrome, Safari et ... IE. Beaucoup de jQuery, beaucoup d'AJAX. Le serveur Web est Apache sur Win XP. La réponse du navigateur est généralement très rapide (le serveur web sur le LAN et ne fait rien d'autre), sauf pour IE, qui est extrêmement lent.

Mon code est généralement structuré le long de ces lignes:

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

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

C'est, le code JS pour module1 est connu du navigateur à partir du mot « go », bien que je pense que la compilation de ce code est différé dans tous les navigateurs jusqu'à ce que j'appelle effectivement la fermeture de module1(), qui ne fait que suivre un chargement réussi(). Je peux donc facilement croire qu'un moteur JS lent, comme cela peut être présent dans IE, présentera un glisser (pour afficher div1). Ce que je remarque est que tandis qu'IE6 se charge du chargement tardif de mes extraits HTML et de tous les composants auxiliaires (images, pour la plupart), lorsque je décroche un autre navigateur (pour passer le temps) et charge mon site, ce navigateur va se bloquer jusqu'à ce qu'IE termine le téléchargement. Autrement dit, IE clobbers complètement mon serveur Apache pour tout le monde. Cela me fait penser que ce n'est pas, principalement, un problème lent d'interprétation de JS. En fait, il pourrait y avoir quelques problèmes de main-tremblement entre Apache et IE. Je n'ai aucune preuve de cela dans les journaux d'Apache, donc je pensais que je demanderais.

Quelqu'un a-t-il des idées? Y a-t-il un problème de configuration (connu) sur Apache? PS: J'ajouterai que pendant ces efforts de chargement tardifs, la barre d'état d'IE - qui est, je crois, un indicateur de progression peu fiable - affiche assez souvent des URL sur mes icônes (c'est-à-dire de très petits fichiers .gif et .png).

+0

Le serveur Web est-il exécuté localement où vous chargez la page Web? –

+0

Sur le réseau local, oui, pas sur le client exécutant le (s) navigateur (s). – Ollie2893

+1

quelle proportion de votre utilisateur utilise réellement IE6? Ce que je veux dire, c'est: est-ce que cela vaut vraiment la peine d'être corrigé (sachant que c'est très probablement un problème IE6 et que vous ne pourrez pas faire grand-chose à ce sujet?). – nico

Répondre

0

Ayant travaillé récemment avec IE6 je peux peut-être indiquer une chose qui nous a aidé. Nous avons examiné tout à fait tout le code jQuery pour ajouter beaucoup (vraiment beaucoup) de:

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

Cette force repeindre les événements sur IE6 (une sorte de nouvelle env d'exécution avec repeindre si je comprends bien IE6 js) et, Au moins, l'utilisateur peut voir les parties de la page déjà chargées. Très utile sur les rappels de chargement. Ainsi, au moins la perception de l'utilisateur est meilleure, des blocs de la page apparaissent et la perception de la vitesse par l'utilisateur est meilleure. Mais il semble que tout le temps réel était meilleur aussi.

A propos IE6 interactions apache, comme votre serveur apache est pas sur votre ordinateur, mais sur le réseau local, vous devriez essayer de:

  • test, le site d'une autre machine, pas celui où IE6 est en cours d'exécution (en cours d'exécution dur)
  • et activer mod_status vérifier l'URL /état pour voir si plusieurs travailleurs sont utilisés par IE6 ou un seul

IE6 est peut-être des problèmes avec les demandes Keepliave ou avec limi tions sur le nombre de requêtes parallèles qu'il peut exécuter sur un serveur.Mais pour cela, nous aurons besoin de plus d'informations sur le trafic HTTP lorsque le problème survient (et l'état du serveur au moins est bon, vérifiez aussi le statut Extended).

Questions connexes