У меня есть веб-сайт (с ESI), который использует обратный прокси-сервер Symfony2 для кеширования. Средний ответ составляет около 100 мс. Я попытался установить Varnish на сервер, чтобы попробовать. Я последовал за руководство из поваренной книги Symfony, удалив все в папке cache
, но папка http_cache
все еще была создана, когда я попробовал ее вне. Поэтому я решил, что могу попытаться прокомментировать $kernel = new AppCache($kernel);
от app.php
. Это сработало очень хорошо. http_cache
больше не создавался, и, по-лакнишстату, казалось, что работает лак:
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. Поэтому я использую echooping используя echoping -n 10 -h http://servername/ X.X.X.X:8080
.
Я понятия не имею, что может быть неправильно. Есть ли дополнительные настройки, необходимые для использования Varnish с Symfony2? Или я просто делаю что-то не так?
В запросах здесь default.vcl
с изменениями, которые я сделал до сих пор.
Я обнаружил 2 проблемы с настройкой по умолчанию для Varnish:
- он не кэширует запросы с помощью куки файлов (и у всех в моем приложении назначена сессия)
- он игнорирует заголовок
Cache-Control: no-cache
Итак, я добавил условия для этих случаев в свой конфиг, и он работает довольно хорошо (~ 175 req/s от ~ 160 с обратным прокси S2, но, честно говоря, я ожидал, что бит больше). Я просто понятия не имею, как проверить, все ли установлено нормально, поэтому любые входы приветствуются.
В большинстве страниц кеш изменяется с помощью cookie с s-maxage
1200. Общие ESI не меняются cookie, а s-maxage
довольно низкий (статьи, списки статей). Страницы профиля пользователя не кэшируются вообще (no-cache
), и я не совсем уверен, что ESI включает в себя даже кэширование с помощью лака. Только ESI, который варьируется с помощью файлов cookie, - это заголовок с пользовательской информацией (на 100% страниц).
Все в этом посте - это Varnish 3.X(я лично использую 3.0.2).
Кроме того, через несколько недель в этом я не знаю, что я делаю, поэтому, если вы найдете что-то странное в конфигурациях, просто дайте мне знать.