Re: Gzip и ETag

2013-05-09 Пенетрантность Maxim Dounin
Hello!

On Thu, May 09, 2013 at 01:19:32AM +0400, Daniel Podolsky wrote:

  Префикс - неправильно, по результатам gzip'ования может
  получиться разный контент, в зависимости от настроек или даже
  тайминга ответа бекенда.
 Я поразмыслил над этим утверждением, и оно не кажется мне верным :)
 
 Контент в зависимости от тайминга ответа бекенда, может быть, и
 получится разный, но будет он вполне эквивалентный.

Я стесняюсь спросить - что в этом предложении понимается под 
словами разный и эквивалентный?

С точки зрения octet equality (т.е. возможности использования 
strong etags) - контент может быть другой при использовании 
deflate(Z_SYNC_FLUSH), которое будет, например, в случае 
proxy_buffering off.

 Настройки gzip - дело другое, но тут надо просто дать нам возможность
 указывать этот самый префикс самим. Тогда при изменении настроек мы
 будем его менять, и все у нас будет хорошо.
 
 Но, наверное,  Last-Modified действительно заменяет weak etag.
 
 У меня довольно часто меняется  Last-Modified без изменения собственно
 контента, и мне об этом известно. Но, скорее всего, тут зряшного
 трафика получается на копейку, или меньше, так что и возиться смысла
 нет.

Ну как бы я о том и говорю: заморочиться поддержкой weak etags 
можно, но Last-Modified всё равно есть чуть менее, чем всегда, и 
смысла в этом немного.

-- 
Maxim Dounin
http://nginx.org/en/donation.html

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: resumable upload

2013-05-09 Пенетрантность Maxim Dounin
Hello!

On Wed, May 08, 2013 at 10:13:05PM +0200, Valery Kholodkov wrote:

 On 05/08/2013 07:03 PM, Maxim Dounin wrote:
 Hello!
 
 On Tue, May 07, 2013 at 09:37:38PM +0200, Valery Kholodkov wrote:
 
 On 03/29/2013 11:46 PM, Anatoly Mikhailov wrote:
 
 On Mar 29, 2013, at 7:38 PM, Andrey N. Oktyabrski a...@bestmx.ru wrote:
 
 On 29.03.2013 17:02, Валентин Бартенев wrote:
 Просто когда дело заходит о том, что на грамотную реализацию и 
 последующую
 поддержку этого кода нужно потратить сколько-то человеко-часов, которые 
 должен
 кто-то оплатить, то часто выясняется, что большинству вопрошающих не 
 очень то
 оно и нужно было.
 Большинство вопрошающих вполне устраивал upload_module.
 
 P.S. Пожалуй, это тупиковая ветвь дискуссии.
 
 тупиковая, он поломался с nginx 1.3.9, а автор этого плагина забил на 
 поддержку
 уже как полгода.
 
 Пожалуй, это подходящий момент, чтобы прокоментировать ситуацию.
 
 Конечно, я мог бы ответить в стиле Валентина Бартенева -- был бы
 спрос, мы бы всё сделали. Иными словами, дайте денег -- всё
 будет.
 
 Однако, я считатю, что подобный ответ не соответствует моему уровню.
 Предлагаемая бизнес-модель не работает, я проверил это на
 собственном опыте. В то же время, поддерживать этот модуль на
 собсвтенном энтузиазме мне тоже не имеет смысла, так как я уже вырос
 из nginx (sic!).
 
 Nginx меня многому научил, и у меня появилось множество идей того,
 как всевозможные вещи реализовать на более высоком уровне, гибче и
 доступнее. Более того, часть из своих гипотез я уже успел проверить.
 Однако, я пока не уверен, что это выльется в конкретный проект.
 
 Поэтому, как видите, ситуация не может сдвинутся с мертвой точки,
 несмотря на то, что в nginx достаточно было бы поправить несколько
 строк.
 
 Валерий, если есть конкретные предложения, какие именно строки
 поправить в самом nginx'е - пожалуйста, выскажи их.
 
 Чтобы работало достаточно вернуть переменную to_write в
 ngx_http_request_body_t.

Если я правильно понимаю, это - не чтобы работало, а чтобы 
собиралось.  В 1.3.9 появилась поддержка Transfer-Encoding 
chunked, и если такой запрос попадёт в location с upload - всё 
сломается. 

 Мне, к сожалению, не кажется, что дело ограничется парой строчек.
 Чтобы нормально работать с телом запроса - нужен, в первую
 очередь, механизм для этого, чтобы не приходилось, как это сейчас
 сделано, переизобретать чтение тела запроса в каждом модуле,
 которому что-то с телом надо сделать.
 
 Я потратил некоторое время на создание такого механизма в рамках
 работы над поддержкой chunked-запросов, но a) upload модуль
 придётся заметно переписать, чтобы использовать этот механизм и
 б) скорее всего нужно будет ещё что-то допиливать, чтобы с этим можно
 было нормально работать из сторонних модулей.
 
 Если вдруг есть желание заняться/посмотреть - то патч можно взять
 тут:
 
 http://mailman.nginx.org/pipermail/nginx-devel/2013-March/003492.html
 
 У меня самого где-то валяется подобный кусок кода. Проблема
 заключается в HTTP pipelining. Я уже два года назад просил механизм
 возвращения буферов в заголовок запроса. Без этого нельзя выйти из
 ситуации, когда за телом запроса незамедлительно следует часть
 заголовка следующего запроса.

Проблемы HTTP pipelining'а - это то, что должен решать (и решает) 
сам nginx в рамках функций чтения тела запроса.  Фильтрам тела 
запроса достаются уже прочитанные от клиента данные.

 Из известных проблем - оно несовместимо со spdy, у которого, всилу
 особенностей протокола, совсем своя логика чтения тела запроса.
 
 -- 
 Best regards,
 Valery Kholodkov
 
 ___
 nginx-ru mailing list
 nginx-ru@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx-ru

-- 
Maxim Dounin
http://nginx.org/en/donation.html

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru