Carnet Wiki

Version 5 — Juin 2018 Cécile

Suite à mes recherches sur l’optimisation pour page speed, j’ai fais quelques tests  : en mettant async au js dans compresseur . php, j’obtiens 74/100 (au départ j’avais 51/100)... c’est pas terrible mais c’est un début !

Je n’ai pas trouvé comment surcharger le fichier compresseur.php dans mon dossier squelettes, j’ai donc modifié directement le fichier dans plugins-dist.
- Mettre async C’est à l’appel du js dans la fonction  : ce niveau function compresseur_ecrire_balise_js_dist

chemin : plugins-dist/compresseur/inc/compresseur.php

function compresseur_ecrire_balise_js_dist(&$flux, $pos, $src, $comments = "") {
	$src = timestamp($src);
	// option chargement JS async par jQl
	if (defined('_JS_ASYNC_LOAD') and !test_espace_prive()) {
		lire_fichier(find_in_path("lib/jQl/jQl.min.js"), $jQl);
		if ($jQl) {
			$comments .= "<script type='text/javascript'>\n$jQl\njQl.loadjQ('$src')\n</script>";
		} else {
			$comments .= "<script type='text/javascript' src='$src'></script>";
		}
	} else {
		$comments .= "<script type='text/javascript' src='$src'></script>";
	}


$flux = substr_replace($flux, $comments, $pos, 0);


return $flux;
}

sinon par rapport à define(’_JS_ASYNC_LOAD’,true) ; que l’on doit mettre dans mes options mais qui à priori ne fonctionne pas, (mais qu’on retrouve dans la fonction du dessus (if (defined(’_JS_ASYNC_LOAD’))), j’ai, il y a quelques années, utilisé cette astuce : https://gist.github.com/tech-nova/85ce2dd05e3596571369 qui fonctionnait très bien...

Maj 20/06/2018 : mettre async au js dans compresseur.php casse la page d’admin « vider le cache ».
Mon résultat sur page speed s’est amélioré ( un peu ) mais cette modification à «  cassé  » la page d’admin «  vider le cache »  : > dans les blocs Images calculées automatiquement et images pour responsive, il n’y avait plus de texte ni bouton vider.Cela posait des problèmes aussi avec le plugin image responsive.

- Mettre define(’_JS_ASYNC_LOAD’,true) ; dans le fichier mes_options (config) : pas de chargement asynchrone pour mon site

Info : https://www.spip.net/fr_article5713.html
Il est également possible d’activer via la constante _JS_ASYNC_LOAD un chargement asynchrone du JavaScript compressé de l’espace public par l’intermédiaire de la bibliothèque jQL intégrée au compresseur. Il faut que les scripts « inline » soient compatibles.

- Essayer l’astuce Comme je suis têtue , je viens quand même de tester et" class="spip_url spip_out auto" rel="nofollow external">https://gist.github.com/tech-nova/85ce2dd05e3596571369et ça marche bien ( sauf il me semble pour le plugin image responsive ), j’obtiens entre 81 et 86/100 à page speed .

J’ai copié dans config le fichier jQl.min.js (qui se trouve dans plugins-dist/compresseur /lib/jQl) et ajouté dans mes_options :

function compresseur_ecrire_balise_js(&$flux, $pos, $src, $comments = ""){
        if (file_exists($src) AND $t = @filemtime($src))
                $src = "$src?$t";
        if (test_espace_prive()){
                $comments .= "<script type='text/javascript' src='$src'></script>";
        } else {
                lire_fichier(basename(dirname(__FILE__)) . "/jQl.min.js", $jQl);
                $comments .= "<script type='text/javascript'>\n$jQl\njQl.loadjQ('$src')\n</script>";
        }
        $flux = substr_replace($flux, $comments, $pos, 0);
        return $flux;
}

Résultat : chargement asynchrone du js donc amélioration du score page speed.

Par contre, il me semble que le plugin image responsive ne fonctionne plus comme avant (https://www.paris-beyrouth.org/Plugin-SPIP-Image-responsive)

Info : Le principe de ce plugin consiste à afficher (ou non) une vignette de l’image, puis à charger (dès que Javascript se déclenche) l’image définitive aux bonnes dimensions et à la bonne résolution.