#performance #api
#Производительность #API
Вопрос:
Я хотел бы отобразить информацию, полученную из веб-API. (скажем, instagram или last.fm )
Существует ли вообще заметная разница в скорости между использованием серверной (Ruby) или клиентской (JS) библиотеки API?
Я бы предположил, что Javascript будет быстрее, поскольку вы можете обращаться к API асинхронно после загрузки страницы в браузере клиента
Просто интересно, существует ли для этого «лучшая практика», поскольку библиотеки API обычно существуют как на стороне клиента, так и на стороне сервера.
Ответ №1:
У каждого способа есть плюсы и минусы, один на самом деле не лучше и не хуже другого для общего случая, вы должны использовать то, что имеет смысл в вашей ситуации.
При небольшом объеме данных / операций вы, скорее всего, будете ограничены самим веб-запросом, а не вычислительной мощностью JavaScript или Ruby.
Я не составил исчерпывающий список, но некоторые общие моменты, которые следует учитывать:
На стороне клиента:
- Вычислительная мощность передается клиенту, вы используете меньше ресурсов, но производительность будет меняться.
- API должен поддерживать либо JSONp, либо Access-Control-Allow-Headers.
- Очень медленно для больших операций с большими наборами данных.
- Любой ключ API будет доступен для просмотра любому посетителю вашего сайта.
- Первоначальное время ответа с вашего сервера будет быстрее, но если вы загружаете большую часть своего контента из запроса API, вам все равно придется подождать.
На стороне сервера:
- Не будет предоставлять ключ API клиенту.
- Использует больше ресурсов, но может обрабатывать большие объемы данных / операций
- Возврат начальной страницы займет больше времени.
- Иногда имеет дополнительные пользовательские функции / методы, поскольку поддерживаются OAuth или другие функции безопасности.
Ответ №2:
Одно большое отличие заключается в том, что JS API не увеличивает нагрузку на ваш сервер, поэтому упрощает масштабирование вашего веб-приложения.
Кроме того, в целом использование JS, вероятно, будет быстрее для пользователя, потому что браузер клиента будет получать данные непосредственно с сервера web-API, а не через ваш сервер.