Maison  >  Article  >  Opération et maintenance  >  Utilisation du cache Nginx

Utilisation du cache Nginx

(*-*)浩
(*-*)浩original
2019-12-26 15:07:113953parcourir

Utilisation du cache Nginx

Un cache Web se trouve entre le client et le « serveur d'origine », qui conserve une copie de tout le contenu visible. Si un client demande du contenu stocké dans le cache, le contenu peut être obtenu directement à partir du cache sans communiquer avec le serveur. (Apprentissage recommandé : nginx use )

De cette façon, parce que le cache Web est "plus proche" du client, il peut améliorer les performances de réponse et l'utiliser plus efficacement et appliquer les applications plus efficacement, car le serveur n'a pas besoin de générer la page pour chaque requête.

Entre le navigateur et le serveur d'applications, il existe plusieurs caches « potentiels », tels que : le cache du navigateur client, le cache intermédiaire, le réseau de diffusion de contenu (CDN) et l'équilibrage de charge et le proxy inverse sur le serveur. La mise en cache, uniquement au niveau du proxy inverse et de l’équilibrage de charge, peut être d’une grande aide pour améliorer les performances.

Par exemple, l'année dernière, j'ai repris une tâche qui consistait à optimiser les performances d'un site Web à chargement lent.

La première chose qui a attiré mon attention était que le site Web prenait presque plus d'une seconde pour générer la page d'accueil. Après une série de débogages, j'ai découvert que la raison du chargement lent était que la page était marquée comme non mise en cache, c'est-à-dire qu'elle était générée dynamiquement en réponse à chaque demande.

Étant donné que la page elle-même ne nécessite pas de modifications fréquentes et n'implique pas de personnalisation, il n'est en fait pas nécessaire de le faire.

Afin de vérifier ma conclusion, j'ai marqué la page à mettre en cache toutes les 5 secondes Rien qu'en effectuant cet ajustement, je peux clairement ressentir l'amélioration des performances. Le temps nécessaire pour atteindre le premier octet est réduit à quelques millisecondes et la page se charge beaucoup plus rapidement.

Les réseaux de diffusion de contenu (CDN) à grande échelle ne sont pas les seuls à pouvoir bénéficier de la mise en cache : la mise en cache peut également améliorer les performances des équilibreurs de charge, des proxys inverses et des services Web frontaux des serveurs d'applications.

Grâce à l'exemple ci-dessus, nous voyons que la mise en cache des résultats du contenu peut utiliser le serveur d'applications plus efficacement car il n'est pas nécessaire d'effectuer un travail de génération de page répété à chaque fois. En outre, la mise en cache Web peut également être utilisée pour améliorer la fiabilité du site Web.

Lorsque le serveur est en panne ou occupé, au lieu de renvoyer un message d'erreur à l'utilisateur, il est préférable de configurer NGINX pour envoyer le contenu mis en cache à l'utilisateur. Cela signifie que le site Web peut conserver certaines, voire toutes les fonctions, en cas de panne du serveur d'applications ou de la base de données.

Comment installer et configurer le cache de base

Nous n'avons besoin que de deux commandes pour activer le cache de base : proxy_cache_path et proxy_cache. proxy_cache_path est utilisé pour définir le chemin et la configuration du cache, et proxy_cache est utilisé pour activer la mise en cache.

proxy_cache_path/path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m

use_temp_path=off;

server {

...

location / {

proxy_cachemy_cache;

proxy_pass http://my_upstream;

}

}

1. Le répertoire du disque local utilisé pour la mise en cache est /path/to/cache/

2.levels définit un répertoire hiérarchique à deux niveaux dans /path/to/cache/ .

Placer un grand nombre de fichiers dans un seul répertoire peut ralentir l'accès aux fichiers. C'est pourquoi, pour la plupart des déploiements, nous recommandons une hiérarchie de répertoires à deux niveaux. Si le paramètre niveaux n'est pas configuré, NGINX placera tous les fichiers dans le même répertoire.

3.keys_zone configure une zone de mémoire partagée, qui est utilisée pour stocker les clés de cache et les métadonnées, un peu similaire à l'utilisation de minuteries.

Mettre une copie de la clé en mémoire permet à NGINX de décider rapidement si une requête est un « HIT » ou un « MISS » sans récupérer le disque, ce qui améliore considérablement la vitesse de récupération.

Un espace mémoire de 1 Mo peut stocker environ 8 000 clés, donc l'espace mémoire de 10 Mo configuré ci-dessus peut stocker près de 80 000 clés.

4.max_size définit la limite supérieure du cache (10G dans l'exemple ci-dessus). Ceci est facultatif ; ne pas spécifier de valeur permet au cache de croître et de consommer tout l'espace disque disponible.

Lorsque le cache atteint cette limite, le processeur appelle le gestionnaire de cache pour supprimer les fichiers les moins récemment utilisés, réduisant ainsi l'espace du cache en dessous de cette limite.

5.inactive spécifie la durée pendant laquelle l'élément peut rester en mémoire sans être consulté. Dans l'exemple ci-dessus, si un fichier n'est pas demandé dans les 60 minutes, le gestionnaire de cache le supprimera automatiquement de la mémoire, que le fichier ait expiré ou non. La valeur par défaut de ce paramètre est de 10 minutes (10 m).

Notez que le contenu inactif est différent du contenu expiré. NGINX ne supprimera pas automatiquement le contenu expiré spécifié par l'en-tête de contrôle du cache (Cache-Control:max-age=120 dans cet exemple).

Le contenu expiré ne sera supprimé que s'il n'est pas consulté dans le délai d'inactivité spécifié.

En cas d'accès à un contenu expiré, NGINX le rafraîchira à partir du serveur d'origine et mettra à jour la minuterie inactive correspondante.

6. NGINX placera initialement les fichiers destinés à être écrits dans le cache dans une zone de stockage temporaire. La commande use_temp_path=off demande à NGINX d'écrire ces fichiers dans le même répertoire lors de leur mise en cache.

Nous vous recommandons fortement de désactiver le paramètre pour éviter les copies de données inutiles dans le système de fichiers. use_temp_path a été introduit dans NGINX version 1.7 et NGINX Plus R6.

Enfin, la commande proxy_cache démarre la mise en cache du contenu dont l'URL correspond à la partie emplacement (dans ce cas, `/`). Vous pouvez également ajouter la commande proxy_cache à la section serveur, qui appliquera le cache à tous les services dont les emplacements ne spécifient pas leur propre commande proxy_cache.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn