merci de tes modifs !
Je pense que si tu vas par là il faudrait
1/ mettre le code JS generique (getAjax() getBloc() dans un fichier externe .js
2/ l'inclure inline dans le squelette via un [(#INCLURE{js/monscript.js}|compacte{js})]
(voire carrément livrer une version pre-minifiee et l'inclure inline directement puisqu'on est là pour faire de la perf
3/ optimiser ta fonction de boot car actuellement elle lance autant de setInterval qu'il y a de bloc async chargé alors qu'un seul lancement suffirait
4/ tu as introduit un bug : le positionner n'est appelé que si l'ancre de l'URL est présente dans le bloc qu'on vient de charger. Sinon ça veut dire que le navigateur a déjà mis la page au bon endroit, et qu'en rappelant positionner() tu risques de refaire scroller la page de l'utilisateur qui a commencé à scroller manuellement, ce qui est très dérangeant
--
Cédric
placido@roxing.net a écrit :
Author: placido@roxing.net
Date: 2016-12-04 15:02:10 +0100 (Sun, 04 Dec 2016)
New Revision: 100849
Modified:
_plugins_/z-core/trunk/inclure/ajax_parallel_load.html
Log:
Amélioration de r100848 .
Utiliser une requete XmlHttpRequest en lieu et place de $.get, ainsi pas besoin d'attendre le chargement de tous les scripts pour entamer la requête (environ 200ms gagnées dans un contexte de prod après quelques tests).
TODO (?) : On pourrait ne charger qu'une fois les fonctions getAjax() et getBloc() s'il y a plusieurs blocs déclarés dans _Z_AJAX_PARALLEL_LOAD.
En attente de quelques retours avant de faire un up de z.
merci de tes modifs !
Je pense que si tu vas par là il faudrait
Merci pour ce super plugin déjà.
1/ mettre le code JS generique (getAjax() getBloc() dans un fichier
externe .js
2/ l'inclure inline dans le squelette via un
[(#INCLURE{js/monscript.js}|compacte{js})]
(voire carrément livrer une version pre-minifiee et l'inclure inline
directement puisqu'on est là pour faire de la perf
Oui, c'est une opti à laquelle j'avais déjà pensé : charger une seule
fois les fonctions dans le head pour ne garder que l'appel
getBloc('#GET{bloc}') à l'endroit de l'inclure. Mais il restait un doute
sur la manière de déterminer le nombre d'inclusion de blocs ajax
finalement présents dans la page (n=0 => aucune inclusion; n>=1 => une
seul inclusion). Ca se passe du côté du pipeline styliser j'imagine ?
Si tu as une idée je suis preneur. Puis il y a le cas des blocs vides aussi.
3/ optimiser ta fonction de boot car actuellement elle lance autant de
setInterval qu'il y a de bloc async chargé alors qu'un seul lancement
suffirait
Oui, il faudrait transmettre un fert vert à la fin getBloc pour une
autre fonction chargée d'executer le triggerAjaxLoad quand tous les
zblocs sont arrivés. Là encore ill faut que je teste le cas des blocs vides.
4/ tu as introduit un bug : le positionner n'est appelé que si l'ancre
de l'URL est présente dans le bloc qu'on vient de charger. Sinon ça veut
dire que le navigateur a déjà mis la page au bon endroit, et qu'en
rappelant positionner() tu risques de refaire scroller la page de
l'utilisateur qui a commencé à scroller manuellement, ce qui est très
dérangeant
Bien vu, je vais corriger.
Toutes ces modifs peuvent apporter un certain gain en performance, mais
il est vrai que cela se fait au prix d'un code un peu plus éparpillé et
dont le comportement est plus diffcile à appréhender.