12
votes

JavaScript non bloquant

Je me demande s'il est possible de charger JavaScript dans la manière dont il ne bloque pas l'expérience utilisateur. Je ne sais pas comment atteindre la même chose, mais je cherche une solution croisée croisée. Je me demande si quelqu'un peut me guider dans la bonne direction. Placer le JS au bas de la page ne fonctionne pas trop bien.

Merci pour votre temps.


3 commentaires

Blargh, j'ai eu un très bon lien pour ça, mais je ne peux pas le trouver


Clarification requise: Parlez-vous de charger des ressources de fichier JavaScript comme dans

7 Réponses :


14
votes

JavaScript circule dans un seul thread, donc si vous avez des appels javascript massifs, disons avec des bibliothèques comme ExtJS, il est normal qu'il puisse être lent. Vous pourriez toutefois envisager les alternatives suivantes:

Tout d'abord, essayez d'optimiser le code autant que vous le pouvez.

Ensuite, vous pouvez utiliser des minuteries dans JavaScript pour simuler des travaux asynchrones. Voici un bon exemple sur la façon de faire cela: http://ejohn.org/blog / How-Javascript-Timers-Work /

Si vous souhaitez plus d'informations, voici quelques conseils supplémentaires sur la manière de tenter de réduire le temps de gel JavaScript.

http: //debuggle.com/posts/run-inks-js-without-frezing-the-Browser:480f4dd6-f864-4f72-AE16-41CCCBDD56CB

bonne chance!


0 commentaires

2
votes

Je pense que vous pouvez utiliser des travailleurs, mais cela semble être mis en œuvre dans la FF3.5, mais peu d'autres.

voir http://hacks.mozilla.org/2009 / 07 / TRAVAIL-SMARTER-PAS-HARDER /


2 commentaires

Une petite recherche Google sur "Onload JavaScript" fournit beaucoup d'informations, dans les pages telles que tintools.org/articles/ Nonobtrissonjavascript / chapitre4.html .


Oui? J'étais trop paresseux pour le mentionner, mais c'est dans l'article pointé.



2
votes

Lorsqu'une page est chargée, il ne peut télécharger que 2 fichiers JavaScript en parallèle à tout moment, essayant de maintenir le nombre de fichiers JavaScript vers le bas et de réduire leur taille (avec une minification, une obscuration et une gzipping) pour l'expérience de chargement.

L'utilisation de rappels dans votre JavaScript vous aidera également aux éléments non bloquants lorsque JavaScript est en cours d'exécution.

Un exemple de jQuery serait xxx


0 commentaires

3
votes

citant Cette réponse : < / p>

Les demandes de ressources JavaScript sont effectivement blocage, mais il y a des moyens autour de cela (à l'esprit: DOM injecté Tags de script dans la tête et Ajax Demandes) qui sans voir le page moi-même est susceptible d'être ce qui est se passe ici.

y compris plusieurs copies de la même JS Ressource est extrêmement mauvais mais pas nécessairement fatal et typique de plus grands sites qui auraient pu être accrété de l'œuvre de séparé équipes, ou juste un vieux codage mauvais, planification ou maintenance.

En ce qui concerne la recommandation de Yahoo à Placez les scripts au bas de la corps, cela améliore la réponse fois, et peut améliorer le chargement réel fois dans un degré (parce que tout le Les ressources précédentes sont autorisées à async premier), mais ce ne sera jamais aussi efficace en tant que demandes non bloquantes (Bien qu'ils viennent avec une barrière élevée de capacités techniques).

Vous pouvez jeter un coup d'œil à une entrée de blog yui sur Non -Brocking JavaScript .


0 commentaires

0
votes

Referring Execution de JavaScript peut être une très bonne solution si vous en avez JavaScript qui n'est pas critique d'avoir chargé immédiatement.


1 commentaires

Non, ceci est pris en charge par tous les navigateurs traditionnels: webkit.org/ Blog / 1395 / Running-Scripts-in-webkit hacks.mozilla.org/ 2009/06 / DEFFER



1
votes

Settimeout avec un petit délai permettra à votre flux de contrôle de continuer tout en planifiant une autre fonction pour exécuter plus tard. Ceci est particulièrement utile pour empêcher l'interface utilisateur de bloquer ou de dépendre par inadvertance de l'exécution réussie de l'autre fonction.

Je trouve qu'il est très utile d'empêcher les erreurs JavaScript d'interférer avec des événements liés. Par exemple, pour installer un gestionnaire de soumission sur un formulaire: xxx


0 commentaires

-1
votes

Regardez sur ce jQuery Plugin (http: //code.google.com/p/funky-jq-plugins/wiki/nonblocking).

Il vise à utiliser des minuteries pour imiter un environnement multi-fileté où le fil d'interface utilisateur n'est pas congelé par des opérations exigeantes telles que l'itération sur des listes longues. Très cool de choses ... j'ai écrit :)

Ciao pour l'instant


0 commentaires