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