У меня есть веб-сайт (с ESI), который использует обратный прокси-сервер Symfony2 для кэширования.Средний ответ составляет около 100 мс.Я попытался установить Varnish на сервере, чтобы попробовать.Я шаг за шагом следовал руководству из поваренной книги Symfony , удалял все в папке cache
, но папка http_cache
все еще создавалась, когда я ее пробовал.Поэтому я решил, что могу попытаться закомментировать $kernel = new AppCache($kernel);
из app.php
.Это сработало довольно хорошо.http_cache
больше не был создан, и 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).
Кроме того, после нескольких недель копания в этом, я действительно понятия не имею, что я делаю больше, поэтому, если вы найдете что-то странное в конфигах, просто дайте мне знать.