Comments 23
В идеале бы не ссылаться на устаревший RFC (в новом, насколько я помню, плюс-минус тоже самое, но).
Поддержу Highwinds в данном споре. Chunked encoding совсем не для того, как вы его используете — он для случаев, когда на стороне источника потока данных есть какая-то относительно сложная логика, данных много и заранее неизвестно, когда они закончатся. Тело запроса к cdn — определённо не тот случай.
он для случаев, когда на стороне источника потока данных есть какая-то относительно сложная логика, данных много и заранее неизвестно, когда они закончатся.
Да, и это не обязательно должен быть сервер, это может быть и клиент. И в спецификации HTTP сказано, что этот функционал должен быть реализован.
Да, может быть и клиент. Но (может я конечно не так понял?) в вашем случае нет множества данных которые неизвестно когда закончатся, а есть короткий запрос.
Зачем вот слать вот такое:
Transfer-Encoding: chunked\r\n\r\n
4\r\ndata\r\n
4\r\ntest\r\n
0\r\n\r\n
Когда можно послать так:
Content-Length: 8\r\n\r\n
datatest
.
Отдельно хочу заметить, что проблема не возникла, если бы Highwinds использовали любую Open Source реализацию HTTP сервера, например Varnish или Nginx, а не писали свою
Как раз написали свою, оптимизированную под работу в режиме CDN (а не http-сервера общего назначения, где может быть обоснованно нужен первый вариант), для сокращения расходов на эксплуатацию, и смогли предложить вам дешевые услуги. По-моему это с их стороны правильное действие.
1) Статика на основном домене через CDN
2) Статика на основном домене без CDN
3) Статика на отдельном домене через CDN
4) Статика на отдельном домене без CDN
То есть использовать CDN есть смысл только в 1 случае, когда через cdn проксируется весь трафик сайта, а статика лежит на том же домене. Работать в таком режиме без POST запросов естественно нельзя. Вообще тема достаточно большая и если интересно могу написать отдельную статью о том, как мы это замеряли и к каким выводам пришли. ;)
Очень странно, что у вас статика на отдельном домене медленнее.
Я бы вам рекомендовал найти причину этого, т.к. обычно ситуация ровно обратная.
Может у вас для разных доменов разные ssl сертификаты (ну и 2 https соединения установить дольше, чем одно)?
Вообще, заводя логику через CDN, вы расставляете очень много грабель.
А если те ребята так обращаются, с RFC…
Вы бы узнали, например, как они обрабатывают другие заголовки, например Cache-Control.
В этом случае CDN на POST должен отвечать 405 Method Not Allowed :-)
если бы Highwinds использовали любую Open Source реализацию HTTP сервера, например Varnish или Nginx
Справедливости ради, nginx очень долго — до версии 1.3.9 — не поддерживал chunked encoding в запросах. Может, у них форк старого nginx.
RFC для слабаков или история одного расследования