Я сделал несколько веб-проектов, и большинство трудностей, с которыми я столкнулся (вопросы, путаницы), можно было бы выяснить с помощью. Но у меня все еще есть важный вопрос, даже после того, как я спросил некоторых опытных разработчиков: Когда функциональность может быть реализована как с помощью кода на стороне сервера, так и с помощью сценариев на стороне клиента (JavaScript), какой из них предпочтительнее?
Простой пример:
Чтобы отобразить динамическую HTML-страницу, я могу отформатировать страницу в коде на стороне сервера (PHP, python) и использовать Ajax для выборки отформатированной страницы и ее рендеринга напрямую (больше логики на стороне сервера, меньше на стороне клиента). ).
Я также могу использовать Ajax для извлечения данных (без форматирования, JSON) и использовать сценарии на стороне клиента для форматирования страницы и ее дальнейшей обработки (сервер получает данные из БД или другого источника и возвращает их). клиенту с JSON или XML. Больше логики на стороне клиента и меньше на сервере).
Так как я могу решить, какой из них лучше? Какой из них предлагает лучшую производительность? Зачем? Какой из них более удобный для пользователя?
С развитием движков JS в браузерах, JS можно интерпретировать за меньшее время, поэтому я должен предпочесть сценарии на стороне клиента?
С другой стороны, по мере развития аппаратного обеспечения производительность сервера растет, а стоимость логики на стороне сервера снижается, поэтому я должен предпочесть сценарии на стороне сервера?
EDIT:
С ответами я хочу дать краткое резюме.
Плюсы клиентской логики:
- Лучший пользовательский опыт (быстрее).
- Меньшая пропускная способность сети (более низкая стоимость).
- Повышенная масштабируемость (снижение нагрузки на сервер).
Плюсы серверной логики:
- Проблемы безопасности.
- Лучшая доступность и доступность (мобильные устройства и старые браузеры).
- Лучше SEO.
- Легко расширяется (может добавить больше серверов, но не может сделать браузер быстрее).
Похоже, нам нужно сбалансировать эти два подхода при столкновении с конкретным сценарием. Но как? Какая лучшая практика?
Я буду использовать логику на стороне клиента, за исключением следующих условий:
- Критическая безопасность.
- Специальные группы (отключен JavaScript, мобильные устройства и др.).