уменьшение размера ответа - PullRequest
0 голосов
/ 23 марта 2012

Я работаю над веб-приложением и использую метод опроса, чтобы проверить, требуется ли какое-либо обновление.Эти запросы опроса происходят каждые 1 или 2 секунды.Размер ответа составляет 240 байт, если обновление не требуется (в этом случае возвращается пустой ответ), и около 10 КБ, что соответствует размеру самого содержимого.Моя проблема заключается в том, что, поскольку он возвращает не менее 240 B в каждую секунду приблизительно, есть ли способ оптимизировать этот ответ, раздвигая границы немного больше?

Когда я проверял содержимое ответа, я увидел, что50 байтов важны для меня (идентификатор сессии и код состояния).Однако в заголовке есть некоторая информация, такая как тип соединения, время ожидания и тип контента.Эти параметры будут одинаковыми для каждого запроса этого типа (т. Е. Для него всегда требуется тип содержимого: «text / html; carset = utf-8»).Итак, я могу просто принять эти настройки на стороне клиента и запретить серверу отправлять эти данные заголовка?

Я использую django на стороне сервера и jQuery для отправки ajax-запросов.Кроме того, любой тип push-технологии пока не обсуждается.

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Это складывается, но не так много, как вы думаете. Если бы вы опрашивали каждую секунду в течение целого часа, вы бы использовали только 864 КБ, меньше, чем требовалось бы для обычной веб-страницы с не зашифрованным кешем. Даже если вы делали это целый день, вы говорите о ~ 20M. Может быть, если вы кто-то вроде Twitter, вам, возможно, придется позаботиться об этом, но я сомневаюсь, что вы окажетесь рядом с трафиком, который потребовался бы для того, чтобы это действительно было проблематично.

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

1 голос
/ 24 марта 2012

Одним из решений такой проблемы является «длительный опрос».Клиент опроса отправит запрос, и веб-сервер проверит, есть ли обновление.Если нет, веб-сервер спит секунду или две, а затем снова проверяет в цикле, не отправляя ответ.Как только этот цикл видит обновление, он отправляет ответ.Для клиентского веб-браузера будет выглядеть, как будто сервер перегружен и требует много времени для ответа, но на самом деле соответствующие данные передаются быстро, а ответы «без данных» просто пропускаются.

IЯ бы рекомендовал добавить тайм-аут в цикл - скажем, 30 или 60 секунд - после чего веб-сервер отвечал бы «без данных», как обычно.Даже 30-секундный цикл уменьшит вашу пустую нагрузку ответа в 15-30 раз.

Предостережение: я читал об этой реализации, но сам не пробовал.Вам нужно будет проверить совместимость с различными веб-браузерами, чтобы убедиться, что этот довольно нестандартный метод не вызывает проблем на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...