Чи може використання AJAX значно покращити продуктивність сервера?


10

Зрозуміло, AJAX покращує користувальницький інтерфейс, але це також зменшує навантаження сервера? Ви можете подумати, що це так, тому що всю сторінку не доведеться обслуговувати кожен раз, але, можливо, є й інші змінні, які я не розглядаю.

Відповіді:


14

Це залежить від того, що ти робиш і як ти це робиш.

  • Якщо ви замінюєте завантаження на повну сторінку запитами AJAX (тобто виконуючи дзвінки AJAX лише тоді, коли користувач натисне на те, що було б завантаженням на повну сторінку), AJAX зменшить завантаження сервера, оскільки ви (мабуть) робите менше обробки та менше повертаєте дані.

  • З іншого боку, якщо ви додаєте автоматичне оновлення типу AJAX, яке опитує сервер кожні кілька секунд, то це може збільшити навантаження залежно від користувача (це може не збільшити навантаження сервера, якщо користувач все одно натискає F5, щоб оновити оновлення вручну, але більшість людей зазвичай не роблять цього годинами)

  • Інша оптимізація AJAX - це завантажувати більше даних під час прокрутки. У такому випадку, якщо користувач не прокручує всю дорогу вниз, це витрачається даремно.

Звичайно, реальна реалізація може спотворювати результати в будь-якому випадку, це типові результати, що передбачають досить хороші реалізації.


Справжнє питання полягає в тому, що змінюється, коли ви переходите до способу ведення AJAX? Чи можете ви усунути роботу, яку раніше витрачали, перемістившись у AJAX, або просто розбити її на більш дрібні шматки? (та додавання накладних витрат у процесі)
SplinterReality

3

Звичайно, це служить для зменшення навантаження сервера. Подивіться на цю презентацію @ jsconf'09 - як Facebook використовував ajax для цього.

Ajax - це асинхроніка. серверне спілкування - і ви можете використовувати це безліччю способів. Люди використовують його для завантаження простого JSON в Інтернеті в режимі реального часу та між ними.

Пам'ятайте - справжньою проблемою є баланс між клієнтом і сервером. Прагніть зробити так, щоб кожна сторона працювала так, щоб система була оптимізована і ви отримали очевидні переваги сприйнятої чуйності та реальної швидкості.


3

Є й інші фактори, про які Ви не розглядаєте - у більшості випадків AJAX збільшить навантаження сервера. У типовому сценарії, що не є ajax, користувач завантажує одну велику сторінку кожні кілька секунд або кілька хвилин. Так, ця одна сторінка трохи більше працює для сервера, але у неї є достатньо часу між запитами на відновлення та обслуговування інших запитів. У сценарії AJAXified ця завантаження однієї сторінки зараз складає десятки маленьких звернень, постійно забиваючи сервер і чекаючи відповідей.

Це трохи нагадує смерть від 1000 скорочень - жоден із запитів не такий великий сам по собі, але загальна вага є вбивцею. Особливо, коли ви починаєте враховувати, що ці невеликі запити є настільки ж дорогими, що служать запитом на повну сторінку. В обох випадках ви, ймовірно, проходите через увесь конвеєр веб-додатків, потрапляючи в базу даних і чекаючи відповіді, сидячи на дорогому HTTP-з'єднанні.

Ось приклад того, як Ajax може швидко стати потворним на сервері. Візьмемо типову "виконавчу інформаційну панель", яка містить 4 слота для віджетів. Скажімо, генеральний директор любить повний звіт про продаж у правій частині, список топ-10 заробітків у середині та звіт про ціну акцій компанії праворуч. І скажімо, що ми будемо робити це за допомогою простих віддалених запитів ajax. Не беручи до уваги таблиці стилів, зображення та інші об’єкти, для вашої сторінки тепер потрібно 4 тури HTTP-туру (головна сторінка, кожна з звітів інформаційної панелі) проти сервера. Для виконання кожного з них потрібен повний стек веб-сторінок - ви збираєтеся вдаряти бази даних та перетворювати HTML за допомогою веб-фреймворку, правда? Тепер помножте одного генерального директора на 2000 віддалених користувачів, деякі з яких мають плямисті зв'язки.

І навпаки, для відображення звітів у вас може бути одна сторінка на сервері, яка виконує виконання та повернення скелета HTML, а також дані (включені до JSON на сторінці). Одномісний, більший зв’язок, але менше побиття на загальному веб-сервері, тому що ви не обробляєте 4 запити та розкручуєте 4 трубопроводи тощо.


1
Чи можете ви навести приклад невеликого запиту, який вам знадобиться в AJAX, який би вам не знадобився інакше?
поштовх

1
Впевнені - коли-небудь помічайте, як на цьому веб-сайті він може вам сказати, чи вже хтось відповів на запитання? Це здійснюється за допомогою невеликого запиту ajax. . .
Wyatt Barnett

@WyattBarnett AJAX не обов'язково означає опитування. Ви можете просто замінити повне завантаження сторінок частковим завантаженням сторінки. У багатьох випадках це може збільшити завантаження сервера, але я не думаю, що це правда в "більшості випадків".
Davy8

хм, добре, що цей приклад мені здається більше схожим на те, що ви можете зробити в AJAX, чого не можете в іншому випадку, ніж на щось, для чого потрібно більше запитів сервера, ніж інакше. Я гадаю, що в ОП було незрозуміло, чи мається на увазі він «більше продуктивності, коли робить саме те ж саме», або якщо він мав на увазі «більшу продуктивність при повному використанні AJAX»
джак

1
Зауважте, що опитування / довге опитування - це лише підмножина AJAX (як зазначено тут), яка також називається "кометою" . Веб-розетки, які дають можливість «справжнього» натискання без опитування або на серверній (ініційованій сервером) AJAX, значно знизять витрачання ресурсів, необхідних для подібної функції.
Алан Х.

2

Якщо ви використовуєте AJAX для заміни роботи, яку інакше виконував би сервер, то так, це покращить роботу сервера. Однак ви, можливо, спроектували так, що сервер все ще робить так само, і тепер все, що відбувається з AJAX, перевершує те, що вже робив сервер.

Переважно це стосується матеріалів інтерфейсу, оскільки ви не повинні робити нічого іншого на стороні клієнта. По суті, все, що робив сервер для підтримки інтерфейсу (наприклад, перезавантажте сторінку з іншим макетом у відповідь на введення користувача), робите замість JavaScript.


0

Якщо візуалізація HTML є важливою частиною продуктивності вашого сервера додатків, перенесення HTML-рендерінгу на клієнта може бути виграшним показником на сервері додатків.

Однак якщо HTML-рендерінг - це невелика частина продуктивності вашого сервера додатків, то більше запитів, як правило, означатиме більше поїздок через стек, більше запитів, більше всього на сервері додатків, втрату продуктивності.

Звичайно, єдиний спосіб дізнатися у вашому конкретному випадку - це спробувати його.


1
У мене виникають труднощі при розгляді будь-яких прикладів, коли використання AJAX викликало б більше запитів, ніж те, що робити те саме без AJAX. Чи можете ви навести приклад?
поштовх

1
HTML завжди надається на стороні клієнта.
Йонас

1
Імовірно, він
пропустив помилку

Починаючи з перегляду / шаблону, поєднуючи його зі змінними та відтворюючи з нього необроблений HTML.
yfeldblum

AJAX викликає більше запитів, ніж те, що робити те ж саме без AJAX у таких випадках: ваш основний макет має "дірки", але він доставляється з цими отворами до браузера, і ці отвори "заповнюються" за допомогою AJAX. Дивіться, наприклад, Facebook.
yfeldblum

0

Ви повинні розглянути найкращий спосіб втілити своє рішення. Проста нединамічна форма не потребує ajax і додавання її може насправді зашкодити продуктивності. Якщо ваша проблема - погані запити, оптимізація ajax у світі не призведе до підвищення продуктивності, яке буде прийнятним.

Якщо ваш сервер перевантажений, вам потрібно з’ясувати, чому.

Якщо ви отримуєте багато хітів, то Ajax не збирається вирішити цю проблему, вам потрібно більше потенціалу. Додавання ajax просто збільшить кількість запитів, з якими повинен працювати ваш сервер.

Якщо у вас є складна сторінка, ви повинні побачити, чи є щось, що ви можете зробити на стороні клієнта, щоб зменшити навантаження на ваш сервер. Якщо ваша сторінка динамічна, але у неї є обмежене кешування пакету даних, це може коригуватись для коригування на стороні клієнта.

А іноді Аякс допоможе. Коли у вас складні форми з динамічними даними, ajax виграє день. Але якщо запити складні та запускаєте багато часу, то ajax все одно не вирішить вашу проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.