16 août 2022

Les problèmes de NGINX FastCGI Cache dans la version gratuite.

Il y a quelques détails qu'il est bon de savoir étant donné l'utilisation généralisée de FastCGI Cache qui pourrait compromettre la santé de votre site.

Cache NGINX FastCGI

Nous savons tous que les performances des applications et des sites Web sont essentielles à leur succès. Cependant, le processus d'amélioration des performances des applications ou des sites Web n'est pas toujours clair. La qualité du code et l'infrastructure sont évidemment critiques, mais dans de nombreux cas, vous pouvez apporter des améliorations significatives à l'expérience de l'utilisateur final de votre application en vous concentrant sur certaines techniques de livraison d'application de base. Un tel exemple est la mise en œuvre et l'optimisation de la mise en cache dans la pile d'applications. Cet article de blog couvre les techniques qui peuvent aider les utilisateurs novices et avancés à obtenir de meilleures performances en utilisant les fonctionnalités de mise en cache de contenu incluses dans NGINX et NGINX Plus.

Panoramica

Un cache de contenu se situe entre un client et un "serveur d'origine" et enregistre des copies de tout le contenu qu'il voit. Si un client demande du contenu mis en cache, il renvoie le contenu directement sans contacter le serveur d'origine. Cela améliore les performances car le cache de contenu est plus proche du client et utilise les serveurs d'applications plus efficacement car ils n'ont pas à refaire le travail de génération de page à partir de zéro à chaque fois.

Il existe potentiellement plusieurs caches entre le navigateur Web et le serveur d'applications : le cache du navigateur client, les caches intermédiaires, les réseaux de diffusion de contenu (CDN) et l'équilibreur de charge ou le proxy inverse qui se trouve devant les serveurs d'applications. La mise en cache, même au niveau du proxy inverse/de l'équilibreur de charge, peut considérablement améliorer les performances.

Cache NGINX

Par exemple, la semaine dernière, j'ai entrepris d'optimiser les performances d'un site Web qui se chargeait lentement. L'une des premières choses que j'ai remarquées, c'est qu'il fallait plus d'une seconde pour générer la page d'accueil principale. Après quelques débogages, j'ai constaté que, comme la page était marquée comme ne pouvant pas être mise en cache, elle était générée dynamiquement en réponse à chaque demande. La page elle-même ne changeait pas très souvent et n'était pas personnalisée, donc ce n'était pas nécessaire. À titre expérimental, j'ai marqué la page d'accueil pour qu'elle soit mise en cache pendant 1 secondes par l'équilibreur de charge et le fait à lui seul a entraîné une amélioration notable. Le temps pour le premier octet est tombé à quelques millisecondes et la page s'est chargée visiblement plus rapidement.

Nous avons beaucoup parlé de NGINX Webserver et comment nous le préférons pour des raisons de performances au plus célèbre Apache.

Cependant, nous avons peu parlé de FastCGI Cache, utilisant Varnish Cache dans l'entreprise pour tous les clients hautes performances.

Cependant, nous assistons à une évolution de nombreux hébergeurs qui proposent FastCGI Cache comme solution Full Page Cache pour le serveur web NGINX.

Nous ne serons pas là pour vous expliquer ce qu'est un FPC (Full Page Cache ndlr), l'ayant déjà fait à plusieurs reprises sur notre blog, mais nous souhaitons entrer dans le vif du sujet en vous parlant de FastCGI Cache qui à première vue peut ressembler à une solution très cache, plus facile que les outils spécifiques à l'entreprise comme Varnish Cache.

Qu'est-ce que le cache Nginx FastCGI ?

Avant de parler de Nginx FastCGI Cache, parlons du fonctionnement de votre site Web.

  1. Lorsqu'un utilisateur visite votre page WordPress, le navigateur Web envoie une requête HTTP / HTTPS à Nginx.
  2. Nginx transmet la requête à PHP-FPM et Nginx capture tous les codes PHP lorsqu'il tente de récupérer la page.
  3. PHP-FPM traite la page et interroge la base de données MariaDB/MySQL pour récupérer la page.
  4. PHP-FPM envoie la page HTML "statique" générée à Nginx.
  5. Nginx envoie la page HTML générée au navigateur Web de l'utilisateur.

NGINX inclut un module FastCGI qui contient des directives pour la mise en cache du contenu dynamique servi par le backend PHP. Le paramètre élimine le besoin de solutions de mise en cache de page supplémentaires comme les proxys inverses (pensez à Varnish) ou les plugins spécifiques à l'application. Le contenu peut également être exclu de la mise en cache en fonction de la méthode de requête, de l'URL, des cookies ou de toute autre variable de serveur.

Lors de l'utilisation Nginx FastCGI , ce module Nginx intégré se situera entre Nginx et PHP-FPM et est capable de générer une page HTML en cache à partir de PHP-FPM.

Lorsqu'un autre utilisateur visite la même page WordPress, votre site Web n'effectuera plus les mêmes requêtes PHP et de base de données car la page est déjà mise en cache et servie par FastCGI.

En conséquence, le temps de réponse de votre serveur sera beaucoup plus rapide après le chargement initial.

Votre charge PHP-FPM et MariaDB/MySQL sera réduite.

L'utilisation des ressources CPU de votre serveur sera inférieure.

Et enfin, votre serveur peut gérer plus de trafic avec les mêmes spécifications de serveur lors de l'utilisation de Nginx FastCGI Cache, vous permettant finalement de maintenir un serveur plus abordable sans avoir à évoluer davantage.

Le principal problème de NGINX FastCGI Cache dans la version gratuite.

Il faut dire et rappeler que NGINX a deux modèles de distribution, la version Free que tout le monde connaît et que nous utilisons également et la version Plus appelée NGINX Plus ou NGINX+ qui est la version commerciale payante.

La différence principale et la plus importante entre les deux versions pour ce qui concerne le cache FastCGI est que la fonctionnalité de PURGE ALL dans la version gratuite est manquante par défaut.

En effet, il peut arriver que vous ayez besoin de vider tout le cache dans certaines configurations spécifiques, imaginons un blog qui a les liens des 5 dernières news en pied de page et lors de la rédaction d'une nouvelle news vous devez vider tout le cache de l'ensemble du site.

Alors qu'avec Varnish il suffit d'envoyer un BAN / ou un PURGE ALL pour nettoyer tout le cache du site avec la même rapidité qu'en effectuant une opération de suppression sur le Filesystem (peut-être moins d'une seconde), avec NGINX FastCGI Cache dans le Free version, vous devrez rappeler une par une au niveau applicatif toutes les URL de votre site, en prenant au minimum 1h sur un site de 5000 pages.

Évidemment, pour résoudre ce problème, des modules tiers pour NGINX ont été créés qui vous permettent d'introduire la fonctionnalité de PURGE ALL comme, par exemple, ngx_cache_purge que vous pouvez trouver sur ce lien : https://github.com/torden/ngx_cache_purge

Bref, si vous n'avez pas les épaules larges pour installer un Système de mise en cache d'entreprise tel que Varnish, vous pouvez simplement opter pour la version gratuite en ajoutant ce module.

 

 

 

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