Размер запроса и загрузка сервера - PullRequest
0 голосов
/ 24 сентября 2011

Я писал спецификацию о том, как организовать параметры запроса, отправляемые в HTTP-запросе, и придумал следующее:

Все параметры имеют префикс с сущностью, к которой они принадлежат,Например, «ab», который читается как «b объекта a», таким образом, каждый параметр будет четко отображаться на соответствующий объект, но что, если бы существовали два различных объекта, которые совместно используют параметр запроса?, чтобы избежать повторения и размера запроса Iпридумал следующий микроформат.Чтобы иметь сущность запроса, называемую shared, каждое свойство shared будет представлять свойство, которое совместно используется сущностями, например,


POST /app/my/resource   HTTP/1.1
a.p = v
b.p = v
c.p = v
d.p = v

. Здесь ясно, что свойство p совместно используется * 1009.* и d, так что это может быть отправлено как

POST /app/my/resource HTTP/1.1
shared.p = a:b:c:d%v

Теперь запрос меньше, а я немного больше DRY , однако это добавляет дополнительную нагрузку насервер, так как он должен проанализировать строку для обработки значений.

Возможно, в моем примере различия незначительны, и я мог бы выбрать и то, и другое, но я хотел бы знать, что вы об этом думаете, что бы вы предпочли, возможно, размер запроса не имеет значения, илиможет быть, разбор строки не так уж важен, когда длина короткая, но что произойдет, когда мы масштабируем размер запроса и строки, какой из них будет лучше, каковы компромиссы?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2011

То, что вы показываете, является алгоритмом сжатия. Помните, что полезные данные часто сжимаются на уровне протокола (HTTP, gzip Content-Type, см. Примеры сжатия HTTP ). Алгоритмы сжатия достаточно продвинуты, чтобы сжимать дублирующиеся строковые элементы, поэтому, вероятно, вы не выиграете много за счет специального сжатия.

Как правило, старайтесь не оптимизировать преждевременно. Сначала покажите, что у вас проблема со временем отклика или размером полезной нагрузки, а затем оптимизируйте. Ваш алгоритм сжатия сам по себе является хорошей идеей, но он делает полезную нагрузку более сложной, чем обычные пары ключ / значение (xxx-form-urlencoded Content-Type). По причинам технического обслуживания руководствуйтесь самой простой конструкцией.

0 голосов
/ 24 сентября 2011

Просто, если подумать, ответ будет зависеть от того, на какой платформе работают ваши внутренние серверы для обработки запросов.Например, в последний раз, когда я проверял, основанный на Perl mod_perl может анализировать эти строки намного быстрее, например ASP.NET.

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