[Adaptive images] Lenteurs à la création des images

Salut,

en creusant sur des problèmes de leeeennnteur dans mes squelettes, je me demande si ce comportement est normal :

Sur le squelette suivant (avec ou sans Adaptive Images activé) le temps de calcul est de 1 210.790 ms (&var_mode=debug)

<BOUCLE_article(ARTICLES) {id_article=1}>
    <BOUCLE_doc(DOCUMENTS) {id_article}
            {extension IN jpg,gif,png}> 
            [(#FICHIER|image_recadre{450:450, -, focus}|image_reduire{450})] 
    </BOUCLE_doc>
</BOUCLE_article>

Et si je remplace image_reduire par adaptive_images (avec Adaptive Images activé donc), le temps de calcul grimpe à 4 730.179 ms.

SPIP calcule 3 images selon les densités d’écran (10x/15x/20x) pour chaque breakpoint indiqué dans la page de config du plugin. Voir capture jointe :

Donc quand les images sont un peu lourdes et qu’il y en a plusieurs, ça peu vite chiffrer (15 259.919ms pour 4 images par ex). Une fois les images créées, le temps de calcul retombe bien sûr.

Ce sont les accès disques qui jouent ? (je suis en SSD en local pourtant)

Tests effectués en local sur les master de SPIP et d’Adaptive Images en PHP7.4 avec une image de 3286 × 2432 pixels (3 Mo)

Allez, je retourne creuser :slight_smile:

Merci

Bonjour,

Pourquoi faire 2 boucles ? Si sur la BOUCLE (DOCUMENTS° tu rajouter ton id_article=1 ça ne va pas mieux ?

C’est un squelette de test, ça simule le fonctionnement d’un squelette article :slight_smile:

J’ai également eu cette erreur :

Fatal error: Uncaught Exception: Unable to write local/adapt-img/360/15x/local/cache-gd2/0c/2dace4718938807134a137704e9294.png, check write right of local/adapt-img/360/15x/local/cache-gd2/0c/2dace4718938807134a137704e9294.png in /home/www/plugins/auto/adaptive_images/v2.1.3/lib/AdaptiveImages/AdaptiveImages.php:1637 Stack trace: #0 /home/www/plugins/auto/adaptive_images/v2.1.3/lib/AdaptiveImages/AdaptiveImages.php(558): AdaptiveImages->imgSharpResize('local/cache-gd2...', 'local/adapt-img...', 540, 10000, 65) #1 /home/www/plugins/auto/adaptive_images/v2.1.3/lib/AdaptiveImages/AdaptiveImages.php(735): AdaptiveImages->processBkptImage('local/cache-gd2...', '360', 540, '15x', 'png') #2 /home/www/plugins/auto/adaptive_images/v2.1.3/lib/AdaptiveImages/AdaptiveImages.php(450): AdaptiveImages->processImgTag('<img src='local...', Array, 750, NULL, false) #3 /home/www/plugins/auto/adaptive_images/v2.1.3/lib/AdaptiveImages/AdaptiveImages.php(322): AdaptiveImages->adaptHTMLPart in /home/www/plugins/auto/adaptive_images/v2.1.3/lib/AdaptiveImages/AdaptiveImages.php on line 1637

Elle a disparue au rechargement de la page.

Les temps de traitement que tu indiques ne me surprennent pas. Suivant la taille de ton image de départ et la taille de l’image d’arrivée, pour des densités différentes, ça peut vite grimper.

De mon côté je produits 8 variations pour chaque image affichée sur une page, et en effet ça peut pousser au delà des 30s de traitement pour des pages un peu fournies en images.

Si tu es en SSD je pense que le goulot d’étranglement ce situe plutôt au niveau du CPU qui doit produire 3 images à chaque fois.

Ce qui m’inquiéterait le plus ce sont des erreurs dans les logs, là c’est pas normal.

Merci pour ton retour.

C’est peu problématique car ça n’impacte que la 1ère visite (bon, pour chaque breakpoint quand même) donc ça passe inaperçu.

Une solution serait de créer les fichiers en tache de fond une fois la page chargée avec les images nécessaires pour le visiteurs en cours, mais c’est peut être difficilement réalisable…