Le WordPress d'aujourd'hui, décodé pour les développeurs

Performance

TranslatePress : le scan de chaînes qui ralentit chaque affichage de page

Un TTFB anormal sur les pages traduites menait à un mécanisme de détection de chaînes à la volée. Correctif par un cache de traductions et prévention par une traduction préalable.

Par WordPress Développement • 17 novembre 2023 • 4 min de lecture • Aucun commentaire
TranslatePress : le scan de chaînes qui ralentit chaque affichage de page

620 millisecondes de temps de réponse serveur en plus sur la version anglaise d’une page, contre la version française du même contenu : c’est l’écart mesuré qui a déclenché l’enquête sur un site vitrine multilingue utilisant TranslatePress.

Le site proposait un contenu en français et en anglais, avec une traduction gérée directement depuis l’interface visuelle de TranslatePress plutôt que par un système de champs dupliqués. Les traductions elles-mêmes avaient déjà été saisies et validées : le ralentissement ne venait donc pas d’un appel à un service de traduction automatique en temps réel.

Symptôme : un TTFB qui double sur les pages traduites

Le Time To First Byte relevé sur la version française d’une page tournait autour de 280 millisecondes, un chiffre correct pour ce type de site. La même page, affichée dans sa version anglaise via l’URL préfixée /en/, affichait un TTFB proche de 900 millisecondes, alors que le contenu HTML final restait de taille comparable entre les deux langues.

Diagnostic : le mécanisme de détection à la volée

TranslatePress fonctionne en interceptant le HTML généré par WordPress juste avant son envoi au navigateur, pour y repérer les chaînes de caractères traduisibles et les remplacer par leur équivalent dans la langue demandée. Ce mécanisme, pratique parce qu’il ne nécessite aucune modification du thème ou des extensions déjà installées, a un coût direct : chaque affichage de page implique une analyse complète du HTML produit, chaîne par chaîne, avant de pouvoir renvoyer la réponse finale.

Sur une page riche en blocs Gutenberg imbriqués, générant plusieurs centaines de nœuds de texte à analyser, ce scan représentait l’essentiel de l’écart de temps constaté. Le profilage via Query Monitor a confirmé qu’aucune requête SQL supplémentaire n’expliquait le ralentissement : le temps perdu se situait entièrement côté traitement PHP, dans la phase d’analyse du contenu généré.

L'essentiel à retenir : TranslatePress peut scanner le HTML généré à chaque affichage ; Ce scan devient coûteux sur des pages longues ou riches en blocs ; Un cache de traductions élimine le scan répété sur un contenu inchangé

Correctif : activer le cache de traduction intégré

TranslatePress propose un système de cache interne pour les traductions déjà résolues, désactivé par défaut dans certaines configurations d’hébergement où le stockage en base est jugé trop volumineux par précaution. L’activation de ce cache, disponible dans les réglages de l’extension, permet de conserver le résultat du scan pour une page donnée tant que son contenu source n’a pas changé.

<?php
add_filter( 'trp_enable_cache_translations', '__return_true' );

Avec ce cache activé, seule la première visite sur une page dans une langue donnée déclenche le scan complet. Les visites suivantes lisent directement le résultat déjà stocké, sans repasser par l’analyse chaîne par chaîne du HTML généré.

Résultat mesuré après activation du cache

Le TTFB de la version anglaise est retombé à environ 310 millisecondes après quelques visites ayant permis de remplir le cache sur les pages les plus consultées, un écart de trente millisecondes avec la version française qui reste tout à fait normal et lié à d’autres facteurs mineurs de traitement.

  • TranslatePress sans cache de traduction activé : scan complet à chaque affichage, coût proportionnel à la richesse du contenu
  • Cache de traduction activé : scan unique par page et par langue, coût ramené à une lecture de valeur déjà résolue
  • Contenu modifié après édition : le cache correspondant est invalidé automatiquement, un nouveau scan se déclenche à la visite suivante

Prévention pour les prochains sites multilingues

Le réflexe à adopter, avant même de constater un ralentissement, consiste à vérifier systématiquement l’état du cache de traduction dès l’installation de TranslatePress sur un site dont le contenu ne change pas en continu. Sur un site fortement éditorial avec des mises à jour fréquentes, un test de charge comparatif avant et après activation du cache reste recommandé pour confirmer l’absence d’effet de bord sur la fraîcheur des traductions affichées.

Un mécanisme de traduction à la volée n’est jamais gratuit en temps de traitement. Le confort d’une traduction sans toucher au code du thème se paie quelque part, et ce coût mérite d’être mesuré avant de le considérer comme négligeable.

En résumé

Le scan de chaînes réalisé par TranslatePress à chaque affichage explique un TTFB nettement dégradé sur les pages traduites d’un site au contenu riche en blocs. L’activation du cache de traductions intégré à l’extension corrige ce problème sans changer la façon dont les traductions sont saisies ni gérées au quotidien par l’équipe éditoriale.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi