bootstrap – Avec ou sans pré-chargement des applications

Le pré-chargement des applications par le bootstrap va permettre d’améliorer l’expérience utilisateur lors du premier chargement d’une application. Même si les applications n’ont pas encore été optimisées pour en profiter pleinement, c’est déjà fonctionnel et efficace.

Par contre, comme énoncé dans l’article pré-chargement des applications – indexation, certaines applications n’ont pas forcément un intérêt à être pré-chargées.
C’est le cas de l’application defolt qui se charge très vite et dont la page de pré-chargement n’apporte rien, voir casse un peu le principe de la page par défaut.
Et c’est aussi le cas de l’application upload qui charge vite mais qui peut à l’avenir permettre la synchronisation d’objets et de liens entre serveurs. Hors le passage par une page intermédiaire oblige le serveur distant à gérer le cookie de connexion avant de pouvoir envoyer des données.

La dernière version du bootstrap, qui va être bientôt publiée, reconnaît maintenant un lien pour désactiver le pré-chargement d’une application. Le comportement par défaut reste de pré-charger une application. Chaque application pourra, sur initiative du maître du code bachue ou d’une autorité locale, ne plus être pré-chargée.

Le lien de non pré-chargement a la forme :

  • action : f
  • source : objet de référence de l’application, par exemple = e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687
  • cible : objet de référence de non pré-chargement = 9d019716a5335ee1f3bad59cbb9cc93132b0726129b26b52d6441a66c7c59a8d
  • méta : objet de référence de l’application, par exemple = e5ce3e9938247402722233e4698cda4adb44bb2e01aa0687

De plus, le problème de dépassement de mémoire est résolu. Il vient d’une pré-allocation de mémoire de la fonction file_get_content qui se fait parfois sur la totalité de l’argument $maxlen alors que le contenu réel est dérisoire… et qui ne libère pas cette mémoire en fin de fonction.

Enfin, la métrologie a été aussi grandement renforcée. L’avenir dira si cela a un impact négligeable sur les performances ou pas. En fin de bootstrap, les logs contiennent une trace de la mémoire maximum utilisée ainsi que les objets et liens lus et vérifiés :

Nov 27 12:21:36 bachue bootstrap/81bd1a52600b: 0.64311790466309 Mp=9698504 Lr=2720+4 Lv=355+4 Or=361+0 Ov=8+0

bootstrap – pré-chargement des applications – indexation

Suite à l’implémentation du pré-chargement des applications dans le bootstrap, il y a quand même un effet de bord à attendre. Cette page peut poser problème pour les robots d’indexation des sites web de l’Internet pour les moteurs de recherche. Et c’est valable aussi pour les moteurs d’indexation de contenu en tout genre.

Deux parades sont possibles.

Si le robot garde le cookie de connexion, la redirection sur la page de pré chargement peut être complétée par un argument sans effet. Le robot verra ainsi un lien vers une page mais avec d’autres arguments, donc une page différente.

Si le robot ne garde pas le cookie de connexion, il faut prévoir une option ou un lien pour désactiver le pré chargement des applications, ou au moins de certaines.

Les deux solutions vont être mises en place plus tard…

bootstrap – pré-chargement des applications

Suite à la Reprise du bootstrap en programmation procédurale, le code à été en très grande partie revu.

La version en programmation procédurale est maintenant utilisée par défaut. La version en programmation orientée objet est laissée en l’état, elle n’est plus fonctionnelle.

Le nouveau bootstrap est pleinement fonctionnel à l’exception de la partie de premier chargement lorsque l’on installe une nouvelle instance de serveur.

Contrairement à avant, les applications et la librairie sont pré-chargés lors du premier lancement de l’application. Cela se passe dans une page dédiée qui une fois l’application en mémoire fait un rechargement de la page. Au rechargement, on est dans l’application. La page de pré-chargement peut être un peu longue comme dans la capture d’écran plus bas mais sur des machines récentes elle passera en moins d’une seconde.
Surtout, cette fonctionnalité qui paraît un peu cosmétique au premier abord va permettre de mieux gérer la sérialisation/désérialisation des différentes instances d’une application. C’est à dire qu’une fois le pré-chargement réalisé avec tous les calculs et parcours de liens effectués, le chargements suivants seront beaucoup plus rapides.

Le travail sur le pré-chargement a contraint la remise à plat des fonctions liées à l’instanciation et à la sérialisation/désérialisation des différentes classes des applications. Cela a été l’occasion de faire le ménage aussi; De fait, les applications ne sont plus compatibles avec les anciennes version du bootstrap.

Voici donc à quoi ressemble le bootstrap lorsqu’il est interrompu par l’utilisateur ou si il y a une erreur :

020161011 - bootstrap_-_2016-10-11_22.11.40
Page du bootstrap interrompu sur initiative de l’utilisateur.

Et enfin, voici à quoi ressemble la page de pré-chargement des applications :

020161011 - bootstrap_-_2016-10-11_22.10.53
Page de pré-chargement de l’application sylabe.