Как оптимизировать HTTP API? - PullRequest
0 голосов
/ 23 января 2011

Мы создали огромный API, использующий HTTP для нашего php-сервера из приложений-клиентов. API просто делается в php с параметрами POST. Однако мы ищем способы ускорить вызов API, поскольку клиенты работают на мобильных устройствах. Что мы можем сделать, чтобы изменить это?

1) Я слышал, что REST API очень популярен и используется крупными компаниями. Как мне превратить мои HTTP POSTS в REST API?
2) Как минимизировать количество HTTP-заголовков и накладных расходов?

Какие еще шаги мы можем предпринять, чтобы увеличить скорость вызова API?

Ответы [ 2 ]

2 голосов
/ 23 января 2011

REST frameworks (и, следовательно, API) - это просто оболочка для простых http-вызовов. Эта структура направлена ​​на поддержание принципа архитектуры REST (Google Roy Fieldings на том, что не является REST), а также на инкапсуляцию некоторых низкоуровневых поведений, таких как кодирование ответа, маршалинг, немаршалинг и т. Д.

Итак, я пытаюсь сказать, что REST-фреймворки не помогут сделать ваше приложение быстрее, чем оно есть. Это немного упростит программирование.

Что касается заголовка HTTP, заголовок HTTP должен содержать только обработку и метаинформацию (например, auth и accept). Что еще у вас есть в заголовке http. (Здесь фреймворк может помочь, например, он может обработать параметр accept для вас)

1 голос
/ 24 января 2011

REST - это архитектурный стиль, который определяет HTTP.Один из способов сделать это - через ограничение кэша , которое торгует с небольшим временем ожидания для большей эффективности;то есть несколько запросов платят немного дополнительных издержек за компонент кэширования, так что подавляющее большинство запросов вообще не попадают в сеть.При вдумчивой реализации этот подход может значительно повысить эффективность вашего сетевого приложения.

К сожалению, переключение архитектурных стилей становится все дороже, чем позже в жизненном цикле проекта вы пытаетесь это сделать, и это звучит так, как будто вы 'мы не только разработали вашу систему, но уже создали ее.Это также звучит так, как будто одна из ваших целей дизайна - чрезвычайно низкая задержка;Я очень сомневаюсь, что стиль REST соответствует вашим целям проектирования.

Так что нам осталось оптимизировать то, что по сути является RPC поверх HTTP.Это может быть достигнуто с помощью следующих методов (и, вероятно, других, о которых я не знаю):

  1. Сжатие.Вы можете "gzip" ваши ответы и объявить их через Content-Encoding заголовок ответа.См., Например, http://www.webcodingtech.com/php/gzip-compression.php,, чтобы сделать это в PHP.
  2. «Минификация».Уменьшите размер вашего HTML, Javascript и CSS, убрав незначительные пробелы, искажая имена переменных и т. Д. В Интернете есть хорошие инструменты для этого.
  3. Оптимизация изображений.Либо по размеру, либо по степени сжатия.
  4. Спор заголовка.Даже если вы не используете стиль REST, HTTP все равно оптимизирован для больших нагрузок.Для подавляющего большинства ответов размер заголовков незначителен по сравнению с размером тела ответа.Однако некоторые крошечные ответы могут уместиться в типичном 1500-байтовом MTU, если у вас есть полное ручное управление заголовками, которые испускает ваш веб-сервер.Однако не все веб-инфраструктуры на стороне сервера позволяют это, и убедитесь, что вы не удаляете заголовки, которые требуются для надлежащего взаимодействия.
  5. Передайте меньше информации мобильным клиентам.Разбивайте большие страницы и связывайте их.Это будет лучше работать с экраном недвижимости на мобильных клиентах.Конечно, это приведет к хаосу с серверами и прокси-серверами и в конечном итоге приведет к потере Интернета, поскольку общая эффективность снизится, но вы можете позволить своим детям беспокоиться об этом.Предоставьте ссылки на «немобильную версию» для опытных пользователей.
...