Я новичок в Varnish Cache и у меня есть вопрос, который, я надеюсь, мне поможет.
У меня очень простая и базовая настройка, но она не работает, как я понимаю, по какой-то причине.
Это связано с тем, что Varnish не кэширует страницы PHP, использующие куки.
Вот мои настройки:
1) Для моего default.vcl у меня есть простой бэкэнд
backend default {
.host = "127.0.0.1";
.port = "80";
}
2) У меня есть простой файл PHP, который имеет только эти две строки:
session_start();
echo time();
3) Когда я вызываю эту страницу, она правильно не кэшируется, так как я не добавила внеобходимые правила vcl
4)
Так что, согласно моему пониманию документации, я добавляю в эти два правила
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
return(deliver);
}
5) Страница PHP по-прежнему не будет кэшироваться.Я вижу, что заголовок Set-Cookie
был удален, так как я использую FireBug в FireFox.
Только если я добавлю это в sub vcl_fetch, PHP будет кешировать:
set beresp.ttl = 24h;
Мой вопрос - это правильно?
Я не думал, что мне нужно будет изменить ttl ответа сервера.Я думал, что просто сброс и отключение файлов cookie приведет к кешированию PHP с сеансом.
Мой полный vcl по умолчанию:
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
set beresp.ttl = 24h;
return(deliver);
}
Моя команда запуска:
varnishd -f /etc/varnish/default.vcl -s malloc,128M -T 127.0.0.1:2000 -a 0.0.0.0:8080
URL-адрес, по которому я звоню:
http://vbox.local:8080/varnish-tests/index.php
В моем файле index.php есть только:
<?php
session_start();
echo time();
Я хотел бы спросить сообщество, правильно ли это выглядит илия не правПо сути, я просто не уверен, почему мне пришлось добавить beresp.ttl = 24h, чтобы наконец получить кэш страницы в лаке.
Я думал, что мне это не понадобится.
Любой совет очень ценится,
Спасибо!
С уважением.