Посты
В одностраничном приложении, должна ли я обрабатывать данные на клиенте или на сервере?
27 декабря 2015 г. • 2 мин чтения
Одним из преимуществ одностраничного приложения (SPA) была передача работы, традиционно выполняемой на сервере, на клиент. Я считаю, что SPA оправдал это обещание.
Однако не все так просто. Легко переусложнить и переложить слишком много работы на клиент. Мы часто забываем, что не можем контролировать окружение клиента — клиент может быть чем угодно, от десятилетнего компьютера до самого современного смартфона с доступом к интернету с различными скоростями. Единственное, на что мы можем рассчитывать, — это то, что пользователь просматривает наш сайт в браузере.
Обработка
По моему опыту, интенсивная обработка и данные, требующие согласованности между сервером и клиентом, такие как преобразование дат или данные, требующие точных расчетов, такие как деньги, являются основными кандидатами для серверной обработки.
Постраничный просмотр
Распространенная задача, выполняемая на клиенте, — это постраничный просмотр. С небольшими наборами данных это работает отлично; однако небольшие наборы данных никогда не остаются небольшими. По мере роста данных приложение замедляется и в конечном итоге становится неответчивым. К сожалению, вы не знаете, что это происходит, потому что это на клиенте, и еще хуже, это происходит не на всех клиентах, что затрудняет диагностику.
Перемещение постраничного просмотра с клиента на сервер устранит проблемы производительности, связанные с постраничным просмотром на клиенте. Вы можете подумать: «но теперь я делаю тонну вызовов API. Столько вызовов API не кажется оптимальным». Верно, это так выглядит, но вы будете удивлены тем, как быстро ваши данные возвращаются с сервера. И самое лучшее? Вы контролируете сервер и можете увеличить емкость по мере необходимости.
В конце концов, вы хотите предоставить пользователю богатый и отзывчивый опыт, и иногда это означает, что сервер выполняет основную работу.
Резюме
Подводя итог, когда это возможно, мы хотим переложить работу на клиент, но, делая это, мы можем быстро перегрузить клиент. Сохранение сложных задач, таких как постраничный просмотр и интенсивная обработка, на сервере может защитить нас от перегрузки клиента.
Автор: Chuck Conway — инженер AI с почти 30-летним опытом разработки программного обеспечения. Он создает практические системы AI — конвейеры контента, агенты инфраструктуры и инструменты, которые решают реальные проблемы — и делится тем, что он узнает на этом пути. Свяжитесь с ним в социальных сетях: X (@chuckconway) или посетите его на YouTube и на SubStack.