У меня есть веб-сайт (с ESI), который использует обратный прокси-сервер Symfony2 для кэширования. Средний ответ составляет около 100 мс. Я попытался установить Varnish на сервере, чтобы опробовать его. Я шаг за шагом следовал руководству из поваренной книги Symfony , удалил все в папке cache
, но папка http_cache
все еще была создана, когда я попробовал. Итак, я решил, что могу попробовать закомментировать $ kernel = new AppCache ($ kernel);
из app.php
. Это сработало очень хорошо. http_cache
больше не создавался, а с помощью varnishstat Varnish, похоже, работал:
12951 0.00 0.08 cache_hitpass - Cache hits for pass
1153 0.00 0.01 cache_miss - Cache misses
Это было из примерно 14000 запросов, поэтому я подумал, что все будет в порядке.Но после повторения я обнаружил, что отклики увеличились до ~ 2 секунд.
Apache работает на порту 9000, а Varnish - на 8080. Поэтому я повторяю, используя echoping -n 10 -h http: // servername / X.X.X.X: 8080
.
Понятия не имею, что могло быть не так. Требуются ли какие-либо дополнительные настройки для использования Varnish с Symfony2? Или я просто что-то делаю не так?
По запросам, вот мой default.vcl
с изменениями, которые я сделал до сих пор.
Я обнаружил 2 проблемы с конфигурацией Varnish по умолчанию:
Cache-Control: no-cache
header Итак, я добавил условия для этих случаев в свою конфигурацию, и теперь она работает довольно хорошо (~ 175 запросов / с вместо ~ 160 с обратным прокси-сервером S2 - но, честно говоря, я ожидал немного большего). Я просто не знаю, как проверить, все ли в порядке, поэтому любые комментарии приветствуются.
У большинства страниц кэш зависит от файлов cookie, с s-maxage
1200. Общие ESI-файлы не зависят от файлов cookie, при этом s-maxage
довольно низкое (статьи, статьи списки). Страницы профилей пользователей вообще не кэшируются ( no-cache
), и я не совсем уверен, что ESI, включенный в них, даже кэширует Varnish. Только ESI, который зависит от файлов cookie, является заголовком с пользовательской информацией (которая находится на 100% страниц).
Все в этом посте специфично для Varnish 3.X (я лично использую 3.0.2).
Кроме того, после нескольких недель вникания в это я действительно понятия не имею, что я делаю, поэтому, если вы обнаружите что-то странное в конфигах, просто дайте мне знать.