Ce qui peut être fait pour améliorer IE8 performance pour les grands ensembles de données?
J'ai une page qui affiche ~300 pages de dollars de données tabulaires. Firefox, Chrome, Safari, tous fonctionnent très bien, mais IE 7, 8 et 8, l'affichage de Compatibilité de tous les malheureux. Il accuse un retard de plusieurs secondes lorsque j'essaie de faire défiler ou appuyez sur la touche page up/page down.
De la Pagination, de plus petits ensembles de données, et d'autres améliorations des suggestions de travail pour cette page. Supposons je n'ai absolument pas le choix, mais pour l'affichage de toutes ces données à la fois... ce sont quelques choses que je peux faire pour le modifier?
Les données est en cours de chargement via jQuery/Ajax et qui semble être au moins en partie suspect ici, parce que quand j'ai créé une page de test afin de rendre les résultats directement, il n'est pas assez comme lente, mais toujours pas aussi accrocheur que les autres navigateurs.
J'ai utilisé avec succès les plugins jQuery comme SlickGrid de s'attaquer à des problèmes similaires dans le passé, mais pour des raisons qui seraient longues à expliquer qu'ils ne sont pas une option, même avec le micro-modèle de capacités de rendu. Je suis principalement concernés par ce que les réglages que je peux faire pour améliorer les performances sans revoir l'ensemble de la page ou de l'introduction de solutions tierces.
Simplifié DOM va faire une grande différence? Ou est-ce que IE ne pas traiter les données amené par JavaScript/Ajax?
Aussi, vous devez considérer si IE (ou tout autre navigateur web) a été conçu pour gérer de 300 pages de données!
Je n'ai pas l'URL plus (désolé d'avoir été un certain temps). Je pense que je me souviens avoir lu quelque chose que IE6 (peut-être 7) serait tout simplement crash une fois donc le nombre de lignes dans une table a été chargé et/ou une fuite de mémoire. Si vous avez à charger dans une page unique que pensez-vous de faire quelque chose de similaire à la façon dont Google Reader fonctionne? La charge de la première 50, ou alors, et alors que l'utilisateur fait défiler il serait de charger les 50 prochaines, ou si? De cette façon, vous ne faites pas une tonne de fonctionner à la fois, mais il fonctionne toujours comme vous voulez...
J'espère que vous n'êtes pas à l'aide de tableaux d'affichage "tableau de données". Si vous êtes, assurez-vous de définir la "table-layout:fixe" de style CSS. Sinon, le navigateur devra attendre jusqu'à ce qu'il télécharge et pose la totalité de la page avant de pouvoir calculer les largeurs de colonne.
OriginalL'auteur aw crud | 2010-05-24
Vous devez vous connecter pour publier un commentaire.
Difficile à voir sans plus de détails ou un exemple... comment construisez-vous le contenu? Il ya un peu de peu de prises à la construction du contenu de la table: notamment par la mise en
innerHTML
directement sur<table>
ne fonctionne pas dans IE, de sorte que jQueryhtml()
sera probablement faire un long, lent chemin de ronde, si c'est ce que vous êtes en utilisant.Mais une astuce pour quoi que ce soit avec des tables, en particulier les plus grands: définir le style
table-layout: fixed
sur le<table>
élément de réglage de la colonne dewidth
styles sur la première rangée de cellules seulement, ou sur un ensemble de<col>
s. (Colonnes sans explicitewidth
partagera le reste de la largeur à parts égales entre eux, dans une mise en page liquide situation.)Puisqu'il ne dépend pas de la quantité de contenu dans chaque cellule,
fixed
disposition de table est plus rapide et beaucoup plus prévisible que la valeur par défautauto
table algorithme de mise en page.OriginalL'auteur bobince
utiliser innerHTML et de minimiser js /dom interaction. Js n'est-ce pas lent dans IE mais le js/dom pont est très lent. Évitez également de sélectionner des éléments dans le code html que vous êtes sur le point d'insertion. Si vous le faites, jQuery aurez à marcher à travers chaque élément et de test avec l'id ou l'attribut css. C'est très lent.
En lui-même l'insertion de quelques milliers d'éléments dans le DOM dans IE, c'est faisable. mais si vous commencer à faire quelques changements sur ce format html, vous pouvez heurte à de graves problèmes de perf.
Au-delà, votre code est nécessaire afin de dire comment le rendre plus rapide. aussi une page de test qui peuvent être profilés serait génial.
Pour info, la seule performance, outil de profilage disponibles pour IE est dynatrace ajax version. Son gratuit et un excellent logiciel de qualité. L'utiliser !
OriginalL'auteur Olivvv
J'ai trouvé que lorsque vous êtes à l'insertion dynamique d'vaste, complexe contenu dans une page existante, c'est à dire est beaucoup (beaucoup) plus rapide à mettre en
innerHTML
qu'à la création par programme des dizaines ou des centaines de nœuds et de les insérer, si vous utilisez une bibliothèque client-side ou non. Si vous effectuez le rendu HTML côté serveur et de l'envoyer vers le bas comme une chaîne de caractères au lieu d'envoyer les données JSON et le rendu côté client, vous êtes à l'aide de plus de bande passante, mais IE les utilisateurs seront probablement avoir une meilleure expérience.IE performances javascript est actuellement assez terrible, donc si vous voulez faire votre site plus rapide dans IE, en minimisant à grande échelle de manipulation du DOM est un bon début. Il ne devrait pas être trop difficile de faire un simple test de comparaison, pour voir si ce changement sera bénéfique pour votre situation particulière.
OriginalL'auteur Joel Mueller
Regarder pour jQuery .find() dans IE8. Si elle n'est pas soigneusement écrit, vous pourriez être à l'origine de IE8 à faire certains assez ridicule de la gymnastique. Tiens je savais plus pourquoi, etc, etc, mais si vous en commentaire votre .find() dans votre jQuery et l'exécuter, même si votre script est temporairement rompu, vous pouvez voir que la page est tout à coup rapide à charger.
Juste une supposition, mais facile d'essayer.
OriginalL'auteur noogrub
OriginalL'auteur Arun Pratap Singh
en ajoutant colgroup par ce que le rendu de la table devient rapide(peut voir la différence lorsque l'on travaille avec des grandes tables) comme moteur de navigateur n'avons pas à chercher pour chaque col de largeur.
http://msdn.microsoft.com/en-us/library/ie/ms533002(v=vs. 85).aspx
OriginalL'auteur Arun Pratap Singh