Maison > Opération et maintenance > Nginx > le corps du texte

Comment configurer le cache des pages nginx

WBOY
Libérer: 2023-05-30 19:13:30
avant
3012 Les gens l'ont consulté

nginx page cache

1. 🎜#

Syntaxe : proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size]
#🎜 🎜 #Valeur par défaut : aucun

Utiliser le champ : http

La directive spécifie le chemin du cache et certains autres paramètres. Les données mises en cache sont stockées dans. le fichier et utilisez la valeur de hachage de l'URL du proxy comme clé et nom de fichier. Le paramètrelevels spécifie le nombre de sous-répertoires mis en cache, par exemple :

proxy_cache_path /data/nginx/cache levels=1:2  keys_zone=one:10m;
Copier après la connexion

Le nom du fichier est similaire à :

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
Copier après la connexion

levels spécifie la structure des répertoires, vous pouvez utiliser n'importe quel 1 ou Numéro à 2 chiffres comme structure de répertoire, tel que x, x:x ou x:x:x. Par exemple : "2", "2:2", "1:1:2", mais il ne peut s'agir que de trois. -répertoire de niveau au maximum.

Toutes les clés et métadonnées actives sont stockées dans le pool de mémoire partagée. Cette zone est spécifiée avec le paramètre keys_zone. L'un fait référence au nom de la piscine partagée et 10 m fait référence à la taille de la piscine partagée.

Notez que chaque pool de mémoire défini doit avoir un chemin unique, par exemple :

proxy_cache_path /data/nginx/cache/one  levels=1   keys_zone=one:10m;
proxy_cache_path /data/nginx/cache/two  levels=2:2  keys_zone=two:100m;
proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;
Copier après la connexion

Si les données mises en cache ne sont pas mises en cache dans le délai spécifié par l'inactif paramètre La demande est supprimée et la durée d'inactivité par défaut est de 10 minutes. Un processus appelé gestionnaire de cache contrôle la taille du cache du disque. Il est utilisé pour supprimer les caches inactifs et contrôler la taille du cache. Ceux-ci sont définis dans le paramètre max_size. Lorsque la valeur actuelle du cache dépasse la valeur spécifiée par max_size, elle dépasse sa taille. . Les dernières données les moins utilisées (algorithme de remplacement LRU) seront supprimées. La taille du pool de mémoire est définie proportionnellement au nombre de pages mises en cache. La taille des métadonnées d'une page (fichier) est déterminée par le système d'exploitation. Par exemple, elle est de 64 octets sous freebsd/i386 et de 128 octets sous freebsd/. amd64.


proxy_cache


Syntaxe : proxy_cache zone_name; 🎜# Par défaut : aucun emplacement à utiliser.

Après la version 0.7.48, le cache suit les champs d'en-tête "expires", "cache-control: no-cache", "cache-control: max-age=xxx" du backend, après la version 0.7.66, les en-têtes "cache-control: "private" et "no-store" sont également suivis. nginx ne traitera pas l'en-tête "vary" pendant le processus de mise en cache, afin de garantir que certaines données privées ne sont pas visibles pour tous les utilisateurs, le backend doit définir l'en-tête "no-cache" ou "max-age=0", ou proxy_cache_key contient des données spécifiées par l'utilisateur telles que $cookie_xxx. L'utilisation de la valeur du cookie dans le cadre de proxy_cache_key peut empêcher les données privées. d'être mis en cache, il peut donc être utilisé dans différents Spécifiez la valeur de proxy_cache_key séparément dans l'emplacement pour séparer les données privées et les données publiques

L'instruction de cache dépend des tampons proxy (buffers). . Si proxy_buffers est désactivé, le cache ne prendra pas effet. …] heure

# 🎜🎜# Valeur par défaut : aucun


Utiliser les champs : http, serveur, emplacement


#🎜 🎜#Définissez différents temps de cache pour différentes réponses, par exemple : #🎜 🎜#

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404   1m;
Copier après la connexion

Définissez le temps de cache sur 10 minutes pour les codes de réponse 200 et 302, et 1 minute pour les codes 404


Si vous définissez uniquement l'heure :

proxy_cache_valid 5m;
Copier après la connexion

Ensuite, seules les réponses avec les codes 200, 301 et 302 seront mises en cache

Vous pouvez également utiliser n'importe quel paramètre pour n'importe quelle réponse. 🎜#2. Définissez un simple serveur de cache nginx

proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
Copier après la connexion
3. Créez un nouveau répertoire de cache
[root@nginx ~]# vim /etc/nginx/nginx.conf
proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g;
  server {
    listen    80;
    server_name localhost;
    #charset koi8-r;
    #access_log logs/host.access.log main;
    location / {
        proxy_pass   http://webservers;
        proxy_set_header x-real-ip $remote_addr;
        proxy_cache webserver;
        proxy_cache_valid 200 10m;
    }
}
Copier après la connexion

4. #
[root@nginx ~]# mkdir -pv /data/nginx/cache/webserver
Copier après la connexion

5 .Testons-le ci-dessous (Google Chrome)



Remarque, lorsque vous utilisez Google Chrome pour tester, vous pouvez appuyer sur f12 pour l'appeler Outils de développement, sélectionner l'option réseau, nous pouvons voir les en-têtes de réponse, ici nous pouvons voir si nous demandons du cache, mais nous ne pouvons pas encore le voir. Configurons-le et testons-le à nouveau.


6. Description de la variable de cache

$server_addr

adresse du serveur, après avoir terminé le système once Cette valeur peut être déterminée après l'appel. Si vous souhaitez contourner l'appel système, vous devez spécifier l'adresse dans Listen et utiliser le paramètre bind.


$upstream_cache_status


Dans la version 0.8.3 sa valeur peut être :

#🎜 🎜#missmiss

expiré - expiré. La demande est envoyée au backend.


mise à jour - expiré. Étant donné que proxy/fastcgi_cache_use_stale est en cours de mise à jour, l'ancienne version de la réponse sera utilisée. Comment configurer le cache des pages nginx


périmé - expiré. Lors de l'utilisation de proxy/fastcgi_cache_use_stale, le backend reçoit des réponses obsolètes.


hit hit


[root@nginx webserver]# service nginx reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新载入 nginx:                      [确定]
Copier après la connexion

7. Recharger le fichier de configuration

[root@nginx ~]# vim /etc/nginx/nginx.conf
proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g;
  server {
    listen    80;
    server_name localhost;
    #charset koi8-r;
    #access_log logs/host.access.log main;
    #增加两头部
    add_header x-via $server_addr;
    add_header x-cache $upstream_cache_status;
    location / {
        proxy_pass   http://webservers;
        proxy_set_header x-real-ip $remote_addr;
        proxy_cache webserver;
        proxy_cache_valid 200 10m;
    }
}
Copier après la connexion
#🎜🎜 # 8. Testez-le


注,从图中我们可以看到,我们访问的服务器是192.168.18.208,缓存命中。大家可以看到是不是很直观啊。下面我们看一下缓存目录。

9.查看一下缓存目录

[root@nginx ~]# cd /data/nginx/cache/webserver/f/63/
[root@nginx 63]# ls
681ad4c77694b65d61c9985553a2763f
Copier après la connexion

注,缓存目录里确实有缓存文件。

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal