Que signifie le keys_zone = myCache: 8m?
Comme indiqué dans la documentation , nginx conservera toutes les clés actives et les informations sur les données sont stockées dans une zone de mémoire partagée, dont name
et size
sont configurées par le paramètre keys_zone. Par souci d'exhaustivité, permet de décomposer par partie
/var/cache/nginx
est l'endroit où le cache réel est stocké. À l'intérieur du dossier, le fichier cache était un fichier binaire, mais vous pouvez facilement repérer la balise html à l'intérieur.
levels=1:2
Ce paramètre de niveaux définit le nombre de niveaux de sous-répertoires dans le cache.
keys_zone=myCache:8m
définissait la zone de mémoire partagée nommée myCache avec une taille maximale de 8 Mo. Il contient toutes les clés actives et les métadonnées du cache. Ainsi, chaque fois que nginx vérifie si une page a été mise en cache, il consulte d'abord la zone de mémoire partagée, puis recherche l'emplacement du cache réel /var/cache/nginx
si le cache existe.
max_size
était la taille maximale du cache, par exemple la taille des fichiers /var/cache/nginx
.
inactive=1h
spécifiez la durée maximale d'inactivité du cache peut être stocké. Les données mises en cache qui ne sont pas accessibles pendant le temps spécifié par le inactive
paramètre sont supprimées du cache, quelle que soit leur actualité.
Fonctionnement de la validation et de la suppression du cache
Extrait des listes de diffusion nginx
La directive proxy_cache_valid spécifie combien de temps la réponse sera considérée comme valide (et sera retournée sans aucune demande de backend). Passé ce délai, la réponse sera considérée comme "périmée" et ne sera pas retournée ou dépendra du paramètre proxy_cache_use_stale .
L'argument inactif de proxy_cache_path spécifie combien de temps la réponse sera stockée dans le cache après la dernière utilisation. Notez que même les réponses périmées seront considérées comme récemment utilisées en cas de demande.
Si je comprends bien, voici le pseudocode comment fonctionne nginx
Lorsque la demande arrive
if cache.exist AND (now() - cache.first_retrieved) < proxy_cache_valid:
use it
else:
retrieve from backend
replace the old ones
Dans un autre processus, le gestionnaire de cache exécute cette logique
if (now() - cache.last_used) > inactive:
del cache
if all-cache.size > max-size:
del *the most inactive cache* until size < max-size
Que faire si proxy_cache_valid (12h) est supérieur à la valeur inactive spécifiée (1h) dans proxy_cache_path?
Tant que la demande et a accédé au cache particulier, cet objet de cache sera toujours valide jusqu'à 12h après que l'objet a été mis en cache. Après cela, le cache a été considéré comme non valide, donc nginx va récupérer du backend et réinitialiser le temporisateur valide. Mais si l'objet était inactif (non accédé) plus d'une heure - même en 12h de période de cache valide -, nginx le supprimera à cause du inactive
paramètre.
365d
et valide est1d
alors nginx va chercher les demandes dans le cache chaque jour pendant un an même si personne ne fait cette demande?