2009-07-09 10 views
0

RésuméJquery très lent dans IE7

jquery est utilisé pour obtenir des résultats de recherche via l'appel get(). Lors du rendu de l'ensemble des résultats, il n'y a pas de problème, mais lors de la restitution d'une partie des résultats, IE7 se bloque systématiquement pendant 5-30 secondes avant le rendu.

Problème

L'appel get() à jquery exécute avec succès. Il n'y a pas eval() ou urlencode ou décoder sur les données, car les données sont html. Une grande zone de contenu est remplacé par les données via

$('#content').html(data); 

Dans #content il y a quelques divs cachés qui contiennent du contenu à déplacer vers un autre à l'extérieur areay #content. (Ce sont les résultats de la recherche par ajax récupérés, et le fil d'Ariane doit être mis à jour dans une autre section)

$('#breadcrumb').html($('#content #breadcrumbcontainer').html()); 

Les travaux ci-dessus très bien dans Firefox et les autres navigateurs.

Test sur une machine Vista avec IE 7.0.6001.18000 sans débogueur de script était rapide et normal dans tous les cas.

Test sur XP avec 7.0.5730.11 avec le débogueur de script MS a été lent à un certain nombre d'occasions. Je ne peux que deviner à ce moment - on dirait qu'il a quelque chose à voir avec

    débogueur de script
  1. en cours d'installation
  2. invalide XHTML strict
  3. causée par une obscure timing - la solution que j'ai vu proposé ici en utilisant setTimeout()
  4. peut-être qu'une file d'attente jquery est nécessaire?
  5. une combinaison de ce qui précède

code plus peut être fourni, mais il est vraiment confondons que la performance est si mauvais (30 secondes de rendu) quand il est 1 seconde dans IE7 sans débogueur de script.

Toute suggestion quant à la cause serait évidemment appréciée.

- mise à jour -

Le tskmanager montre maintenant l'utilisation du processeur pour iexplorer.exe alors qu'il tourne au ralenti. Juste se bloque, comme il y a un délai d'expiration.

- mise à jour deux -

Il a été confirmé que IE7 sans débogueur de script Microsoft IE7 est lent

Plage: 4 secondes à 2h19 moyenne: 33 secondes médian: 18 secondes écart standard: 37 secondes

+0

Utilisez-vous des délais pour attendre que la tâche précédente soit terminée? Dans ce cas, utilisez certainement la file d'attente de jQuery, même si je ne suis pas sûr que cela a quelque chose à voir avec le ralentissement massif que vous rencontrez. –

+0

Le retard non-CPU sent le réseau, mais on ne sait jamais. Essayez de retirer morceau par morceau jusqu'à ce que le coupable soit isolé. En ce moment, c'est un jeu de devinettes. –

+0

@musicfreak - Je vais essayer quelque chose avec la file d'attente. @JamesM On dirait que c'est un problème de réseau, mais pas le réseau - parce que dans d'autres navigateurs, c'est très rapide, et le réseau lui-même a terminé la requête http. Les deux lignes de code qui pourraient être responsables se comportent de manière erratique. Il est possible que ce soit un autre problème de latence étrange avec Google Analytics - mais il n'y a aucun signe de réseau ou de CPU actif. –

Répondre

1

Le problème est venu d'un fait que j'omis - qui est que les résultats de la recherche, chacun, contient un fla objet sh.enlever l'objet flash rend la vitesse comparable à FF.

Le flash est maintenant chargé après $(document).ready() en utilisant swfobject et le problème a disparu.

Le comportement était incohérent car IE7 mettra en cache l'objet flash - donc parfois les performances seront normales.

+1

J'ai remarqué beaucoup de problèmes avec la façon dont fonctionne la mise en cache d'IE et l'utilisation de jquery. –

Questions connexes