Я пытаюсь создать базовую рабочую Nginx + SSI Пример:Nginx/SSI независимый фрагмент кэширования
Nginx конфигурации (только соответствующие части, для краткости):
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();
включаемой работает хорошо:
Время: 1466710388 Время Фрагмент: 1466710388
Теперь, спустя секунду я ожидал бы страницу (ssi.php), чтобы быть еще в кэше, но time.php
фрагмент быть свежей:
время: время 1466710388 Фрагмент: 1466710389
Однако он остается полностью то же самое в течение 5 секунд, после чего страница ГНУ обновляется вместе с фрагментом:
Время: Время 1466710393 Фрагмент: 1466710393
Я сделал это раньше с ESI и Varnish, и ожидаем, что это сработает с SSI. Неужели я ошибаюсь в этом? Я не могу найти ответ онлайн для этого и экспериментировал с разными заголовками кеш-контроля, но я уверен, что это правильный способ сделать это. Что мне здесь не хватает?
Вы, сэр, потрясающие! Я отказался от этого, но перемещение директивы 'ssi on' сделало трюк.Огромное спасибо. –