[spip-dev] affichage, performance et plugins

Bonjour à tou(te)s,

Premier mail ici, soyez gentils siouplé. :stuck_out_tongue:

Une question que j’avais posée sur #spip cette semaine, et qui me semble coller à cette liste :

Ne serait‑il pas possible de scinder #INSERT_HEAD en deux balises #INSERT_JS et #INSERT_CSS (qui existe déjà) afin de mettre les appels où l’on veut dans les squelettes ?

Juste histoire de pouvoir charger les appels à JS en fin de page si ça nous chante et ainsi éviter de poireauter qu’ils se chargent avant de pouvoir lire le document (entre autres).

Bon, alors, gentiment, on aime bien les mails en texte sur la liste :slight_smile:

Dans la pratique, tu peux déjà déplacer #INSERT_HEAD dans le pied de ta page si tu veux.
Cela reste fonctionnel et permet de charger les js au dernier moment.

#INSERT_HEAD_CSS est récent, et n’est pas encore pris en charge par tous les plugins, qui continuent nombreux à insérer leur css avec le reste.
Il faut déjà finir ce chantier de prise en compte de ce pipeline.
Après, découper encore ce qui reste me parait assez discutable.
Quand tu as enlevé toutes les css et styles de #INSERT_HEAD, qu’y reste-t-il, à part du js ?

Cédric

Il y a aussi un pipeline jquery_plugins qui est pas trop mal pour mettre certains js ensemble non?

Non, mais la question est bonne.
Au départ il y avait que #INSERT_HEAD dans lequel on mettait tout en vrac.
Ensuite, s'est posé le problème des CSS des plugins, qui sont normalement des styles par défaut surchargeables, mais sont insérés trop tard. Du coup, j'ai introduit le #INSERT_HEAD_CSS.

Tu poses la question du placement des JS dans le pied.
En fait, la raison qui me bloque pour faire ça via #INSERT_JS, c'est qu'on ne peut pas garantir que ça marche en plaçant une telle balise dans le pied.
Car il suffit que un javascript inline se promène dans la page, introduit par un plugin ou un squelette, pour que tout soit pêté.

L'autre argument, c'est que c'est une pratique non perenne. Aujourd'hui, il est pertinent de faire ça pour contourner les défauts des navigateurs qui bloquent le chargement de la page quand ils rencontrent un js. Mais c'est un défaut des navigateurs, qu'il faut contourner aujourd'hui, mais peut être plus demain. Deplacer physiquement la balise d'insertion dans le pied des squelette les rend de fait potentiellement obsolète en fonction de l'évolution des navigateurs.

Donc l'approche que j'ai retenu, c'est de dire qu'on continue toujours à insérer les JS dans le head, via #INSERT_HEAD.
Mais, pour optimiser le chargement de la page, il faudra être capable de ramasser tous les scripts présents dans la page, les compacter, et les déplacer en fin de page.
C'est donc, à mon sens, une fonction d'optimisation activable ou non, qui peut evoluer en fonction du statut des navigateurs, et ne remets pas en cause l'architecture des squelettes.

Ça ne répond pas à ton besoin immédiat, mais ça t'en dit plus sur la direction générale !
Cédric