11 mai 2023

Comment nettoyer correctement le Varnish Cache dans un blog WordPress.

Un extrait de code PHP à intégrer dans votre thème pour nettoyer votre Varnish Cache de manière rapide, polyvalente et sélective.

Varnish Cache est une technologie logicielle extrêmement puissante et flexible qui est largement utilisée comme accélérateur HTTP. Cet outil agit comme un intermédiaire entre le serveur et le client, stockant les données (ou "caching") pour réduire la charge sur le serveur et fournir des réponses plus rapides aux clients.

Mécanisme de proxy inverse du cache de vernis

Les avantages de Varnish Cache.

Les avantages de Varnish Cache sont nombreux. Tout d'abord, il augmente considérablement les performances du site Web en réduisant le temps de chargement des pages et en économisant les ressources du serveur. Deuxièmement, il améliore l'évolutivité des sites Web en leur permettant de traiter plus de demandes en même temps. Enfin, il offre une flexibilité inégalée grâce à son langage de configuration VCL (Varnish Configuration Language) qui permet de définir des règles de mise en cache spécifiques à chaque cas.

Vernis et le TTFB

Varnish Cache a un impact significatif sur le Time to First Byte (TTFB), un indicateur clé des performances du site Web. TTFB est le temps entre le moment où un client (tel qu'un navigateur Web) envoie une requête HTTP et le moment où il reçoit le premier octet de données du serveur. Varnish Cache réduit considérablement le TTFB en stockant les réponses du serveur et en les transmettant rapidement aux clients, évitant ainsi d'avoir à retraiter les demandes.

Un TTFB inférieur signifie que le contenu est livré plus rapidement aux utilisateurs, ce qui améliore l'expérience utilisateur et la perception de la vitesse du site. Mais ce n'est pas seulement l'expérience utilisateur qui en profite : les moteurs de recherche comme Google apprécient également les temps de réponse plus rapides.

Varnish et l'exploration du budget de Google

Google utilise une ressource limitée, connue sous le nom de "budget d'exploration", pour indexer les sites Web. Ce budget correspond au nombre de pages que Google est capable et désireux de crawler sur une période donnée. Un TTFB inférieur signifie que Google peut explorer et indexer plus de pages dans ce budget, optimisant ainsi l'utilisation de ses ressources d'exploration.

L'amélioration de votre budget d'exploration peut avoir un impact direct sur la capacité de Google à indexer votre site Web en temps opportun. Ceci, à son tour, peut influencer positivement le classement de votre site dans les résultats de recherche, car une indexation plus complète et plus rapide donne à Google une vue plus précise de votre site et de son contenu. De cette manière, l'utilisation de Varnish Cache peut aider à améliorer à la fois la vitesse du site et son classement dans les résultats de recherche.

Statistiques Google Crawl Temps de réponse

Des sites Web de haut niveau comme le New York Times, la BBC, Wikipedia ont déjà adopté Varnish Cache pour améliorer leurs performances et assurer une expérience utilisateur fluide et réactive.

Vernis et WordPress

WordPress est la plateforme de blogs la plus populaire au monde et Varnish Cache répond parfaitement à ses besoins. Cependant, la gestion de Varnish Cache dans un environnement WordPress peut être délicate. Heureusement, il existe plusieurs plugins disponibles qui peuvent aider à ce processus, y compris W3 Total Cache e Vernir la purge HTTP.

Malgré leur utilité, ces plugins peuvent présenter de sérieux problèmes.

W3 Total Cache, par exemple, peut être extrêmement lent à vider le cache, en particulier lorsqu'il s'agit de plusieurs catégories. Cela peut entraîner des retards importants dans la publication des publications, interférer avec l'activité éditoriale et potentiellement provoquer des erreurs telles que Gateway Timeout.

Délai d'expiration de la passerelle NGINX

Vernir la purge HTTP, tout en étant plus rationalisé et axé uniquement sur le nettoyage du cache, s'est avéré peu fiable à plusieurs reprises. Au lieu de nettoyer le cache de manière sélective et granulaire, il nettoie souvent l'intégralité du cache, ce qui peut avoir un impact significatif sur les performances du site.

Pour résoudre ces problèmes, nous vous proposons un extrait de code PHP à insérer dans le fichier functions.php de votre thème WordPress actif. Ce code se charge de vider le cache Varnish à chaque publication d'un article (sauf pour les brouillons), en s'assurant que la page d'accueil, l'article lui-même et toutes les catégories associées sont correctement mis à jour.

Le code proposé ne prétend pas traiter les installations WordPress installées par WooCommerce, les taxonomies de produits, les balises AMP ou les API ; cependant, il est assez simple à comprendre et facilement extensible pour s'adapter aux besoins les plus disparates.

Code PHP pour WordPress pour PURGER le vernis.

// Funzione che pulisce la Cache Varnish tramite metodo PURGE su socket RAW senza l'utilizzo di cURL


function purgeURL($URL) {

$varnishIP = "127.0.0.1";
$varnishPORT = "80";

$hostwp = trim(str_replace( array( 'http://', 'https://' ), '', get_option('siteurl')), '/' );

// Open the socket
$errno = ( integer) "";
$errstr = ( string) "";
$varnish_sock = fsockopen( "127.0.0.1", "$varnishPORT", $errno, $errstr, 10);

// Prepare command to send
$cmd = "PURGE $URL HTTP/1.0\r\n";
$cmd .= "Host: $hostwp\r\n";
$cmd .= "Connection: Close\r\n";
$cmd .= "\r\n";

// Send the request
fwrite( $varnish_sock, $cmd);

// Close the socket
fclose( $varnish_sock);
}

// In fase di salvataggio POST recupero gli slug delle categorie che contengono il post, ed invoco la pulizia della cache Varnish
// tramite la funziona purgeURL

function pulisci_cache_categorie ($post_id){

if ( wp_is_post_revision( $post_id ) ) {
return;
}

$categories = get_the_category($post_id);

// Inizializzare un array vuoto per i permalink
$relative_permalinks = array();

// Iterare su ogni categoria
foreach ($categories as $category) {
// Ottenere il permalink della categoria e convertirlo in un URL relativo
$relative_permalink = wp_make_link_relative(get_category_link($category->term_id));

// Aggiungere l'URL relativo all'array
$relative_permalinks[] = $relative_permalink;
}

foreach($relative_permalinks as $relative_permalink) {
purgeURL ($relative_permalink);
}

}

add_action( 'save_post', 'pulisci_cache_categorie' );

Le code fourni est écrit en PHP et fait partie du fichier functions.php d'un thème WordPress. Ce code définit deux fonctions : purgeURL() e pulisci_cache_categorie().

  • purgeURL($URL): Cette fonctionnalité est conçue pour s'interfacer avec un serveur Varnish, un accélérateur d'application web très puissant, pour invalider ou "purge" une URL particulière du cache. Le serveur Varnish est configuré pour résider localement ("127.0.0.1") et communiquer sur le port 80. La fonction crée une connexion socket avec le serveur Varnish et envoie une commande "PURGE" pour l'URL spécifiée. Cette commande indique à Varnish de supprimer tout cache correspondant à cette URL, forçant Varnish à récupérer une nouvelle copie de la page la prochaine fois qu'elle est demandée. Après avoir envoyé la commande, la fonction ferme la connexion socket.
  • pulisci_cache_categorie($post_id): Cette fonction est liée à l'action WordPress 'save_post', qui se déclenche à chaque fois qu'un article est enregistré. Lorsqu'un article est enregistré, cette fonction est appelée avec l'ID de l'article comme argument. Si la publication est une révision (c'est-à-dire, pas la version "live" de la publication), la fonctionnalité se termine immédiatement. Sinon, il récupère toutes les catégories auxquelles appartient la publication et construit un tableau d'URL relatives correspondant à ces catégories. Pour chacune de ces URL, appelez la fonction purgeURL(), entraînant la suppression de ces pages du cache Varnish. Cela garantit que lorsqu'une publication est modifiée, toutes les pages de catégorie qui incluent cette publication sont mises à jour dans le cache, reflétant ainsi les modifications apportées à la publication.

Ces fonctionnalités fonctionnent ensemble pour s'assurer que les modifications de publication dans WordPress sont reflétées dans vos pages de catégorie en temps opportun, tout en conservant les avantages de performance d'un cache Web comme Varnish.

Un focus sur la performance grâce à fsockopen().

Dans le cadre des appels réseau en PHP, fsockopen() et cURL sont deux méthodes populaires pour effectuer des requêtes HTTP. Alors que cURL est connu pour sa polyvalence et sa large gamme d'options de configuration, fsockopen() peut offrir des avantages de vitesse dans certains scénarios.

fsockopen() ouvre une socket directe vers un serveur, permettant une communication de bas niveau plus rapide et moins gourmande en ressources. Cela peut être particulièrement avantageux lorsque vous faites de nombreuses requêtes simultanées ou que vous avez des besoins de latence très faibles. Aussi, fsockopen() peut être plus rapide dans les situations où la réponse du serveur n'est pas nécessaire ou peut être ignorée, car il n'est pas nécessaire d'attendre que la réponse soit renvoyée et traitée comme ce serait le cas avec cURL.

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

INFORMATIONS

Managed Server Srl est un acteur italien leader dans la fourniture de solutions système GNU/Linux avancées orientées vers la haute performance. Avec un modèle d'abonnement peu coûteux et prévisible, nous garantissons que nos clients ont accès à des technologies avancées en matière d'hébergement, de serveurs dédiés et de services cloud. En plus de cela, nous proposons des conseils système sur les systèmes Linux et une maintenance spécialisée en SGBD, sécurité informatique, Cloud et bien plus encore. Nous nous distinguons par notre expertise dans l'hébergement de CMS Open Source de premier plan tels que WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart et Magento, soutenus par un service d'assistance et de conseil de haut niveau adapté aux administrations publiques, aux PME et à toutes tailles.

Red Hat, Inc. détient les droits de Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale d'AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de la FreeBSD Foundation ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt. Oracle Corporation détient les droits sur Oracle®, MySQL® et MyRocks® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; REDIS® est une marque déposée de Redis Labs Ltd. F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB. Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited. Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal®. Amazon Web Services, Inc. détient les droits sur AWS® ; Google LLC détient les droits sur Google Cloud™ et Chrome™ ; Facebook, Inc. détient les droits sur Facebook® ; Microsoft Corporation détient les droits sur Microsoft®, Azure® et Internet Explorer® ; La Fondation Mozilla détient les droits sur Firefox®. Apache® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée du groupe PHP. CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV. Ce site n'est affilié, sponsorisé ou autrement associé à aucune des entités mentionnées ci-dessus et ne représente aucune de ces entités de quelque manière que ce soit. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées appartiennent à leurs titulaires. MANAGED SERVER® est une marque déposée au niveau européen par MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italie.

JUSTE UN MOMENT !

Souhaitez-vous voir comment votre WooCommerce fonctionne sur nos systèmes sans avoir à migrer quoi que ce soit ? 

Entrez l'adresse de votre site WooCommerce et vous obtiendrez une démonstration navigable, sans avoir à faire absolument quoi que ce soit et entièrement gratuite.

Non merci, mes clients préfèrent le site lent.
Retour en haut de page