Возврат Varnish (выборка/доставка) по сравнению с фрагментированным кодированием

Я пытаюсь разбить ответ кеша лака на части... (это возможно, верно?)

У меня есть следующий сценарий:

1 – кеш чист, все готово (перезапуск службы лакировки)

2 — доступ к www.mywebsite.com/page в первый раз

Заголовки первого доступа

(длина содержимого не возвращается, и существует фрагментация, отлично!)

3 — при следующем доступе к странице (например, при простой перезагрузке) она будет помещена в кеш.. и теперь я получаю следующее:

2+ заголовка доступа по времени

(теперь у нас есть длина содержимого... что означает отсутствие фрагментации :( не очень хорошо!)

После прочтения некоторых документов/блогов Varnish (и этого: http://book.varnish-software.com/4.0/chapters/VCL_Basics.html), похоже, есть два "последних" возврата: return(fetch) или return(deliver).

При принудительном выполнении return(fetch) фрагментированное кодирование работает... но это также означает, что запрос не будет кэшироваться, верно? В то время как return(deliver) кэширует правильно, но добавляет заголовок длины содержимого.

Я попытался добавить их в свой файл default.vcl:

set beresp.do_esi = true; (at vcl_backend_response stage)

и

unset beresp.http.content-length; (at different stages, without success)

Итак... как заставить кеширование Varnish работать с Transfer-Encoding: chunked?

Спасибо за внимание!


person TheNurb    schedule 07.09.2016    source источник


Ответы (1)


Есть ли причина, по которой вы хотите отправить его по частям? Кодирование фрагментированной передачи — неуклюжий обходной путь, когда длина содержимого неизвестна заранее. Что на самом деле здесь происходит, так это то, что Varnish может вычислить длину сжатого содержимого после его первого кэширования, и поэтому ему не нужно использовать обходной путь! Будьте уверены, что вы не упустите прирост производительности в этом сценарии.

person mwp    schedule 08.09.2016