Посты
В одностраничном приложении следует ли обрабатывать данные на клиенте или на сервере?
27 декабря 2015 г. • 2 мин чтения

Одним из преимуществ одностраничного приложения (SPA) была передача работы, традиционно выполняемой на сервере, на клиент. Я считаю, что SPA выполнило это обещание.
Однако не все так гладко. Легко увлечься и переложить слишком много работы на клиент. Мы часто забываем, что не можем контролировать окружение клиента — клиентом может быть что угодно, от десятилетней машины до новейшего смартфона с доступом к интернету различной скорости. Единственное, на что мы можем рассчитывать, это то, что пользователь просматривает наш сайт в браузере.
Обработка данных
По моему опыту, интенсивная обработка и данные, требующие согласованности между сервером и клиентом, такие как преобразования дат или данные, требующие точных вычислений, например деньги, являются отличными кандидатами для серверного рендеринга.
Пагинация
Обычная задача, выполняемая на клиенте — это пагинация. С небольшими наборами данных это работает отлично; однако небольшие наборы данных никогда не остаются небольшими. По мере роста данных приложение замедляется и в конечном итоге перестает отвечать. К сожалению, вы не знаете, что это происходит, потому что это происходит на клиенте, и что еще хуже, это происходит не на всех клиентах, что затрудняет устранение неполадок.
Перенос пагинации с клиента на сервер устранит проблемы производительности, связанные с пагинацией, на клиенте. Вы можете подумать: “но теперь я делаю множество API-вызовов. Делать так много API-вызовов не кажется оптимальным.” Верно, так и кажется, но вы удивитесь, как быстро ваши данные возвращаются с сервера. И самое лучшее? Вы контролируете сервер и можете увеличить мощность по мере необходимости.
В конце концов, вы хотите предоставить пользователю богатый отзывчивый опыт, и иногда это означает позволить серверу выполнять тяжелую работу.
Заключение
Подводя итог, когда это возможно, мы хотим переложить работу на клиент, но делая это, мы можем быстро перегрузить клиент. Сохранение трудоемких задач, таких как пагинация и интенсивная обработка, на сервере может защитить нас от перегрузки клиента.
Автор: Чак Конвей специализируется на разработке программного обеспечения и генеративном ИИ. Свяжитесь с ним в социальных сетях: X (@chuckconway) или посетите его на YouTube.