Carnet Wiki

Page Speed et Spip

Suite à mes recherches sur l’optimisation pour page speed, j’ai fais quelques tests :

-  Mettre async à l’appel du js dans la fonction : 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;
}

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.

-  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 de https://gist.github.com/tech-nova/85ce2dd05e3596571369

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.

Cécile - Mise à jour :28 octobre 2018 à 12h19min