Відповіді:
Це залежить від того, що ти робиш і як ти це робиш.
Якщо ви замінюєте завантаження на повну сторінку запитами AJAX (тобто виконуючи дзвінки AJAX лише тоді, коли користувач натисне на те, що було б завантаженням на повну сторінку), AJAX зменшить завантаження сервера, оскільки ви (мабуть) робите менше обробки та менше повертаєте дані.
З іншого боку, якщо ви додаєте автоматичне оновлення типу AJAX, яке опитує сервер кожні кілька секунд, то це може збільшити навантаження залежно від користувача (це може не збільшити навантаження сервера, якщо користувач все одно натискає F5, щоб оновити оновлення вручну, але більшість людей зазвичай не роблять цього годинами)
Інша оптимізація AJAX - це завантажувати більше даних під час прокрутки. У такому випадку, якщо користувач не прокручує всю дорогу вниз, це витрачається даремно.
Звичайно, реальна реалізація може спотворювати результати в будь-якому випадку, це типові результати, що передбачають досить хороші реалізації.
Звичайно, це служить для зменшення навантаження сервера. Подивіться на цю презентацію @ jsconf'09 - як Facebook використовував ajax для цього.
Ajax - це асинхроніка. серверне спілкування - і ви можете використовувати це безліччю способів. Люди використовують його для завантаження простого JSON в Інтернеті в режимі реального часу та між ними.
Пам'ятайте - справжньою проблемою є баланс між клієнтом і сервером. Прагніть зробити так, щоб кожна сторона працювала так, щоб система була оптимізована і ви отримали очевидні переваги сприйнятої чуйності та реальної швидкості.
Є й інші фактори, про які Ви не розглядаєте - у більшості випадків AJAX збільшить навантаження сервера. У типовому сценарії, що не є ajax, користувач завантажує одну велику сторінку кожні кілька секунд або кілька хвилин. Так, ця одна сторінка трохи більше працює для сервера, але у неї є достатньо часу між запитами на відновлення та обслуговування інших запитів. У сценарії AJAXified ця завантаження однієї сторінки зараз складає десятки маленьких звернень, постійно забиваючи сервер і чекаючи відповідей.
Це трохи нагадує смерть від 1000 скорочень - жоден із запитів не такий великий сам по собі, але загальна вага є вбивцею. Особливо, коли ви починаєте враховувати, що ці невеликі запити є настільки ж дорогими, що служать запитом на повну сторінку. В обох випадках ви, ймовірно, проходите через увесь конвеєр веб-додатків, потрапляючи в базу даних і чекаючи відповіді, сидячи на дорогому HTTP-з'єднанні.
Ось приклад того, як Ajax може швидко стати потворним на сервері. Візьмемо типову "виконавчу інформаційну панель", яка містить 4 слота для віджетів. Скажімо, генеральний директор любить повний звіт про продаж у правій частині, список топ-10 заробітків у середині та звіт про ціну акцій компанії праворуч. І скажімо, що ми будемо робити це за допомогою простих віддалених запитів ajax. Не беручи до уваги таблиці стилів, зображення та інші об’єкти, для вашої сторінки тепер потрібно 4 тури HTTP-туру (головна сторінка, кожна з звітів інформаційної панелі) проти сервера. Для виконання кожного з них потрібен повний стек веб-сторінок - ви збираєтеся вдаряти бази даних та перетворювати HTML за допомогою веб-фреймворку, правда? Тепер помножте одного генерального директора на 2000 віддалених користувачів, деякі з яких мають плямисті зв'язки.
І навпаки, для відображення звітів у вас може бути одна сторінка на сервері, яка виконує виконання та повернення скелета HTML, а також дані (включені до JSON на сторінці). Одномісний, більший зв’язок, але менше побиття на загальному веб-сервері, тому що ви не обробляєте 4 запити та розкручуєте 4 трубопроводи тощо.
Якщо ви використовуєте AJAX для заміни роботи, яку інакше виконував би сервер, то так, це покращить роботу сервера. Однак ви, можливо, спроектували так, що сервер все ще робить так само, і тепер все, що відбувається з AJAX, перевершує те, що вже робив сервер.
Переважно це стосується матеріалів інтерфейсу, оскільки ви не повинні робити нічого іншого на стороні клієнта. По суті, все, що робив сервер для підтримки інтерфейсу (наприклад, перезавантажте сторінку з іншим макетом у відповідь на введення користувача), робите замість JavaScript.
Якщо візуалізація HTML є важливою частиною продуктивності вашого сервера додатків, перенесення HTML-рендерінгу на клієнта може бути виграшним показником на сервері додатків.
Однак якщо HTML-рендерінг - це невелика частина продуктивності вашого сервера додатків, то більше запитів, як правило, означатиме більше поїздок через стек, більше запитів, більше всього на сервері додатків, втрату продуктивності.
Звичайно, єдиний спосіб дізнатися у вашому конкретному випадку - це спробувати його.
Ви повинні розглянути найкращий спосіб втілити своє рішення. Проста нединамічна форма не потребує ajax і додавання її може насправді зашкодити продуктивності. Якщо ваша проблема - погані запити, оптимізація ajax у світі не призведе до підвищення продуктивності, яке буде прийнятним.
Якщо ваш сервер перевантажений, вам потрібно з’ясувати, чому.
Якщо ви отримуєте багато хітів, то Ajax не збирається вирішити цю проблему, вам потрібно більше потенціалу. Додавання ajax просто збільшить кількість запитів, з якими повинен працювати ваш сервер.
Якщо у вас є складна сторінка, ви повинні побачити, чи є щось, що ви можете зробити на стороні клієнта, щоб зменшити навантаження на ваш сервер. Якщо ваша сторінка динамічна, але у неї є обмежене кешування пакету даних, це може коригуватись для коригування на стороні клієнта.
А іноді Аякс допоможе. Коли у вас складні форми з динамічними даними, ajax виграє день. Але якщо запити складні та запускаєте багато часу, то ajax все одно не вирішить вашу проблему.