[SPIP Zone] Insert body

Bonjour,

Les outils d'audit de performance de sites suggèrent en général de mettre un maximum de scripts javascript en toute fin de la page, au plus près de la balise de fermeture du "body".

Dans SPIP, je ne vois pas de balise ou pipeline du style "insert_body" qui le ferait.
Le pendant de #INSERT_HEAD et #INSERT_HEAD_CSS en quelques sortes.

Cette absence est-elle un choix technique ?
La préconisation vous semble-t-elle pertinente ?

Ou bien est-ce dans la "liste de courses" ?
Avec une priorité basse ?
Ou bien imminente ?

D'avance merci.

Luc

Ce point a été abordé il y a longtemps par Cédric :

Le principal problème de ce type d’optimisation est sa faisabilité
Voir http://blog.spip.net/SPIP-et-la-gestion-de-la-performance.html
et http://letrainde13h37.fr/18/performance-web-pieges-optimisation-a-posteriori/

Une alternative est d’utiliser jQl (chargeur Asynchrone pour jQuery) qui permet de charger les librairies de manière différée :

http://www.yterium.net/jQl-an-asynchronous-jQuery-Loader
http://fr.slideshare.net/Yterium/jql-jquery-async-loader

A lire aussi : les échanges abordés sur ce fil de discussion :
http://thread.gmane.org/gmane.comp.web.spip.zone/36819

Cédric avait fourni un morceau de code intéressant :
https://gist.github.com/tech-nova/85ce2dd05e3596571369

En tout cas c’est dans les éléments à l’étude pour plus tard
https://core.spip.net/issues/3229

.Gilles

Bonjour,

la recommandation de mettre les scripts en pied de page est de plus en plus discutable avec la disparition des plus vieux navigateurs et le comportement des navigateurs les plus récents.
Par ailleurs c'est très lourd à maintenir et réaliser dans un CMS dans lequel les pages sont constituées de morceaux de squelettes qui peuvent parfois arriver avec un bout de javascript, ce qui va casser si jQuery n'est pas encore chargé.

jQL est un outil de chargement asynchrone alternatif, qui permet de conserver ce fonctionnement des scripts contenus dans la page, du moment qu'ils sont encapsulés dans un jQuery(function(){ .. });

A partir de SPIP 3.1 il sera possible d'activer le chargement du script compacté/minifié par SPIP au moyen de la directive
define('_JS_ASYNC_LOAD',true);
dans mes_options.php, sans avoir besoin de modifier #INSER_HEAD ni sa position.

Cette méthode est compatible avec la plupart des plugins, mais suppose que l'on fasse attention aux scripts qu'on ajoute dans son squelette. C'est pourquoi elle n'est pas activable par interface, car elle suppose un peu de connaissances techniques et la rendre plus simple d'accès serait contre-productif, à mon avis.

--
Cédric

luc.tech@free.fr a écrit :

Bonjour,

Les outils d'audit de performance de sites suggèrent en général de mettre un maximum de scripts javascript en toute fin de la page, au plus près de la balise de fermeture du "body".

Dans SPIP, je ne vois pas de balise ou pipeline du style "insert_body" qui le ferait.
Le pendant de #INSERT_HEAD et #INSERT_HEAD_CSS en quelques sortes.

Cette absence est-elle un choix technique ?
La préconisation vous semble-t-elle pertinente ?

Ou bien est-ce dans la "liste de courses" ?
Avec une priorité basse ?
Ou bien imminente ?

D'avance merci.

Luc
----
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Merci Gilles et Cédric pour vos réponses.
Ca n'est donc pas aussi évident et simple que cela...
Je vais me mettre à niveau en explorant vos pistes.

Et atendre la 3.1!

Le 28/07/2015 21:40, Cédric Morin a écrit :

Bonjour,

la recommandation de mettre les scripts en pied de page est de plus en plus discutable avec la disparition des plus vieux navigateurs et le comportement des navigateurs les plus récents.
Par ailleurs c'est très lourd à maintenir et réaliser dans un CMS dans lequel les pages sont constituées de morceaux de squelettes qui peuvent
parfois arriver avec un bout de javascript, ce qui va casser si jQuery n'est pas encore chargé.

jQL est un outil de chargement asynchrone alternatif, qui permet de conserver ce fonctionnement des scripts contenus dans la page, du moment qu'ils sont encapsulés dans un jQuery(function(){ .. });
jQl an asynchronous jQuery Loader - yterium.net

A partir de SPIP 3.1 il sera possible d'activer le chargement du script compacté/minifié par SPIP au moyen de la directive
define('_JS_ASYNC_LOAD',true);
dans mes_options.php, sans avoir besoin de modifier #INSER_HEAD ni sa position.

Cette méthode est compatible avec la plupart des plugins, mais suppose que l'on fasse attention aux scripts qu'on ajoute dans son squelette. C'est pourquoi elle n'est pas activable par interface, car elle suppose un peu de connaissances techniques et la rendre plus simple d'accès serait contre-productif, à mon avis.