Есть и другие факторы, которые вы не учитываете - в большинстве случаев AJAX увеличивает нагрузку на сервер. В типичном сценарии без AJAX пользователь загружает одну большую страницу каждые несколько секунд или несколько минут. Да, эта единственная страница немного больше работает для сервера, но у нее достаточно времени между запросами на восстановление и обслуживание других запросов. В сценарии AJAXified эта одностраничная загрузка теперь представляет собой десятки небольших обращений, которые постоянно бьют по серверу и ждут ответов.
Это немного похоже на смерть от 1000 порезов - ни один из запросов не настолько велик сам по себе, но общий вес - убийца. Особенно, если учесть, что эти небольшие запросы примерно так же дороги, как и полностраничный запрос. В обоих случаях вы, вероятно, выполняете весь конвейер веб-приложений, попадаете в базу данных и ждете ответа, сидя на драгоценном HTTP-соединении.
Вот пример того, как ajax может быстро стать ужасным на сервере. Давайте возьмем типичную «исполнительную панель», которая имеет 4 слота для виджетов. Допустим, генеральному директору нравится полный отчет о продажах в правой части, список 10 лучших получателей в середине и отчет о цене акций компании справа. И скажем, мы собираемся сделать это с помощью простых удаленных запросов ajax. Без учета таблиц стилей, изображений и других ресурсов ваша страница теперь требует 4 обходных циклов HTTP (главная страница, каждый из отчетов сводной панели) на сервере. Для выполнения каждого из них требуется полный веб-стек - вы собираетесь работать с базами данных и визуализировать HTML с помощью веб-инфраструктуры, верно? Теперь умножьте одного генерального директора на 2000 удаленных пользователей, некоторые из которых имеют разнородные соединения.
И наоборот, у вас может быть одна серверная страница, которая выполняет и возвращает HTML-скелет, а также данные (включенные в JSON на странице) для отображения отчетов. Одиночное, более крупное соединение, но в целом меньшее количество биений на веб-сервере, потому что вы не обрабатываете 4 запроса и не запускаете 4 конвейера и т. Д.