Je suis en train de mettre en place un exemple Nginx + SSI travail de base:Nginx/SSI cache fragment indépendant
config Nginx (seulement les parties pertinentes, par souci de concision):
ssi on;
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:20m max_size=20m inactive=60m use_temp_path=off;
server {
listen 80;
server_name localhost;
location/{
proxy_cache my_cache;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_buffering on;
proxy_pass http://127.0.0.1:81;
}
}
server {
listen 81;
root /path/to/root;
location ~ ^/.+\.php {
fastcgi_pass 127.0.0.1:9000;
}
}
ssi.php :
<?php
header('Cache-Control: public, s-maxage=5');
?>
Time: <?php echo time(); ?>
Fragment time: <!--# include virtual="/time.php" -->
time.php:
<?php
header('Cache-Control: no-cache');
echo time();
Ils incluent fonctionne bien:
Heure: 1466710388 temps Fragment: 1466710388
Maintenant, une seconde plus tard, j'attendre la page (ssi.php) être encore mises en cache, mais le fragment time.php
être frais:
heure: 1466710388 Fragment temps: 1466710389
Cependant, il reste tout à fait la même pendant 5 secondes, après quoi la page ssi est mis à jour avec le fragment:
Heure: 1466710393 temps Fragment: 1466710393
Je l'ai fait avant avec ESI et Varnish, et s'attendre à ce que cela fonctionne de la même manière avec SSI. Ai-je tort de supposer cela? Je ne trouve pas de réponse en ligne pour cela, et j'ai expérimenté différents en-têtes de contrôle de cache, mais je suis à peu près sûr que c'est la bonne façon de procéder. Qu'est-ce que j'oublie ici?
Monsieur, vous êtes géniaux! J'avais renoncé à cela, mais déplacer la directive 'ssi on' a fait l'affaire.Merci beaucoup. –