nginx-1.9.8

Maxim Dounin mdounin на mdounin.ru
Пт Дек 11 17:08:43 UTC 2015


Hello!

On Fri, Dec 11, 2015 at 11:23:13AM -0500, S.A.N wrote:

> > > Как понимать "не атомарны"? Может отдаться часть слайса?
> > 
> > Модуль slice разбивает запрос к бекенду на много range-запросов, а 
> > при отдаче клиенту полученные ответы склеиваются.  Соответственно 
> > если в процессе файл на бекенде поменяют - часть ответов будет от 
> > одного файла, часть - от другого.  И вернуть клиенту что-то 
> > целостное станет невозможно.
> 
> Похоже проблема в отсутствии ревалидации range-ответов бекенда, если бекенд
> отдает ответ с тем же валидатором (ETag и/или Last-Modified) тогда эти
> ответы валидны, если нет, нужно обновлять кеш всех range-ответов, тогда
> будет гарантия валидности всех range-ответов.

Ревалидация не лечит неатомарность, а лишь позволяет уменьшить 
временное окно, в течении которого можно наблюдать проблемы.  Если 
ответ собирается из кусков - то в любом случае возможна ситуация, 
когда часть ответа уже отдана, а очередной пришедший от бекенда 
кусок - от другого, более нового файла.

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

В общем, как уже было сказано, если используется slice, то файлы 
менять не надо.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru