Назад | Перейти на главную страницу

Правила конфигурации Varnish для кеширования больших файлов MP3 и PDF?

На нашем сайте есть несколько больших файлов PDF и MP3, которые мы хотели бы кэшировать в Varnish как статические файлы. В настоящее время мы не делаем ничего особенного - просто удалите файлы cookie в vcl_recv и set resetp.ttl = 100w; в vcl_fetch.

Проблема, похоже, заключается в том, что один из этих файлов запрашивается (возможно, старыми браузерами), а его еще нет в кеше Varnish. Пока Varnish загружает файл с серверной части, происходит задержка. Насколько я понимаю, он не начинает доставляться клиенту, пока данные не будут полностью загружены. Это может занять около 20 секунд, и иногда Adobe Acrobat или плагин MP3 путаются.

Есть способ как pass контент прямо во время загрузки и сохранить его в кеше для следующего соответствующего клиентского запроса?

Потоковая ветка 3.0.2 + больше не актуальна и поддерживается только подписчиками Varnish Plus, без поддержки сообщества по этому поводу.

Поэтому, если вам нужны потоковые возможности, вы можете:

  • Пытаться Лак Плюс (доступно только подписчикам), в котором есть встроенная поддержка.
  • Протестируйте и посмотрите, решит ли предстоящий выпуск Varnish Cache 4.0 (релиз ожидается во втором квартале 2014 года) эту проблему (должно).

Рекомендации по прочтению: https://www.varnish-software.com/blog/http-streaming-varnish

С помощью vanilla Varnish 3.0 вы можете установить beresp.do_stream в значение true в vcl_fetch. Файл будет передаваться в потоковом режиме, пока он будет извлечен из серверной части. Предостережение: объект настроен на занятость во время потоковой передачи, поэтому другие клиенты будут приостановлены.

Также существует выпуск Varnish 3.0.2 с встроенной «полной» поддержкой потоковой передачи: http://repo.varnish-cache.org/test/3.0.2+streaming/ которые люди используют в производстве, так что, возможно, вы захотите попробовать.

Или, может быть, вы могли бы «подогреть» свои файлы, поместив их в кэш памяти Varnish, прежде чем пользователи начнут его загружать?

Varnish 5.1.2 делает именно то, что вы хотите, с конфигурацией по умолчанию.

Я пробовал это с событиями, отправленными сервером, где мне нужен потоковый первый запрос и кешированный второй запрос. Просто работает.