Varnish - как обслуживать устаревший контент для всех клиентов при повторной загрузке?

Я использую Varnish перед серверной частью.

Поскольку серверная часть иногда работает очень медленно, я включил льготный режим для обслуживания устаревшего контента для клиентов. Однако в льготном режиме есть еще один пользователь, который должен будет перейти на серверную часть, и у него будет очень плохой пользовательский интерфейс.

Возможно ли с помощью Varnish загружать устаревший контент для ВСЕХ пользователей при обновлении кеша?

Я видел, как некоторые люди предлагали использовать задание или скрипт cron для обновления кеша на локальном хосте. Это не изящное решение, потому что на нашем сайте так много URL-адресов, и будет очень сложно вручную обновить каждый из них.

Я знаю, что основная проблема связана с серверной частью, и нам нужно исправить ее там. Но в краткосрочной перспективе мне интересно, могу ли я улучшить время отклика от слоя Varnish?


person Allen    schedule 19.08.2013    source источник


Ответы (2)


Вы можете сделать это (в среднем) в Varnish 3, используя перезапуск и вспомогательный процесс.

Как написать для него VCL, описано здесь: (раскрытие: мой собственный блог)

http://lassekarstensen.wordpress.com/2012/10/11/varnish-trick-serve-stale-content-while-refetching/

Это довольно запутанно, но работает, когда у вас есть существующий объект, срок действия которого только что истек. В (будущем) Varnish 4 появятся дополнительные хуки VCL, которые упростят такие трюки.

person lkarsten    schedule 22.08.2013

Да, можно предоставлять всем пользователям устаревший контент (в течение определенного периода времени). Вам следует поэкспериментировать с режимами благодати и святого, чтобы установить соответствующие временные ограничения, которые подходят вашему приложению.

Подробнее читайте здесь: https://www.varnish-cache.org/docs/3.0/tutorial/handling_misbehaving_servers.html

person Bazze    schedule 15.03.2014