Задать вопрос

$.ajax и .load() при большом количестве посетителей — реально?

Ребят, подскажите пожалуйста. Организовал навигацию по сайту ( + мониторинг нажатия кнопок "Назад", "Вперёд" ) средствами ajax( $.ajax, .load() ).
Вопрос стоит такой - не сильно ли это будет грузить сервер, на котором стоит сайт? Очень жалею что не хватило ума поинтересоваться этим когда сайт уже практически готов. Да и времени не мало потратил на организацию работы всей этой схемы.
Сайт с ajax работает очень шустро, отсюда и количество запросов увеличиться ( можно конечно штучно добавить задержку перед каждым запросом в виде лоадера )
Были замечены ошибки 501,504,404 при одиночном использовании сайта, возникающие при подгрузке определённого элемента страницы возникающие периодически ( исправил повторной отправкой запроса, при которой ответ всегда удавалось получить без ошибки ).
Спасибо за уделённое время. И напоследок - если все так плохо, как с этим бороться ? ( нету времени на переписывание, кроме как минимизировать влияния js или ajax на нагрузку сервера или если возможно, за короткие строки заменить их аналогичными методами ).

* Большое количество посетителей - 100-200 в день, 50% из которых будут использовать не только функцию простого просмотра содержания сайта ( посылать сообщения, комментировать записи, создавать темы, прикреплять фотографии ... )
  • Вопрос задан
  • 3217 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 7
begemot_sun
@begemot_sun
Программист в душе.
100-200 посетителей в день это не нагрузка. Разберитесь с производительностью сервера, и почему возникают 501, 504, 404 ?

Например:
404 -- это явно неверный URL, до php дело не доходит
504 -- явно производительность php, увеличьте таймаут ожидания на сервере (для начала).
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Среднее количество запросов в вебе - это от 1000 в секунду на 1 сервер :)

Ajax по опыту снижает нагрузку на сервер за счет экономии трафика => более быстро отдаются запросы.

Вы занимаетесь затыканием дыр, вместо того что бы разобраться в первопричине.
Если у вас иногда отдается ошибка при запросе - у Вас что то фатально не так.
Смотрите лог ошибок сервера, php_errors итд.

Возможно у вас очень [sarcasm]дорогой[/sarcasm] тариф у хостера и памяти/проца/чего то еще иногда не хватает.
Ответ написан
@podvzbzdnul
Можно посредством js хранить историю перемещений локально, при закрытии сайта отправлять на сервер.
Ответ написан
barkalov
@barkalov
"Нагружаться" сервер будет пропорционально количеству получившихся запросов. Если для статичного сайта средняя сессия была, скажем, в 10 запросов, а динамическая получилась в 40 запросов, то серверу будет максимум в четыре раза тяжелее, не более. А учитывая экономию на трафике, может выйти что серверу в итоге даже легче будет.

Сам по себе $.ajax не страшен (если кешируется нормально), проблема в том что у вас вылазят ошибки там, где их быть не должно (костыль в виде второй попытки подгрузки - не решение проблемы) А пока у вас есть необъяснимые ошибки сложно что-либо предвидеть, может и три человека уронят.
Ответ написан
Комментировать
@mind3
А каким образом формируется запрос на сервер через ajax, чую что-то асинхронно в другом месте не успевает обработаться и запрос на сервер кривой уходит или перезапись параметров происходит в js. Отследите через Console.log() как меняются параметры запросов. Ибо 404 это ответ сервера что такой страницы не существует, ну а 504 видимо вылазит из-за того что похапе не успевает обработать и отдать серверу инфу за то время когда сервер должен вернуть ее.
Ответ написан
Комментировать
@WebIM Автор вопроса
Спасибо ребят за ответы.
На счет ошибок - сайт стоит на бесплатном плане hostinger ( для тест поставил там ). Ошибки возникают когда выполняется функция $("#pageid").load("/pages/page.php?param=1");
php сторона обычная, аля
if($_SESSION['id'])
{
   include($_SERVER['DOCUMENT_ROOT']."file");
   if($Class->GetData(Somedata) )
      mysql_query(...);

Не вижу где возможно посмотреть на hostinger'e лог ошибок. Chrome только показывает в логе что статус ошибки 500 (Internal server error )
Спасибо еще раз всем за ответы.
Ответ написан
@namit
В яндекс метрике есть что то вроде подписки на события - это вероятно то, что вам нужно. help.yandex.ru/metrika/objects/reachgoal.xml
По крайней мере разгрузит ваш сервер от этой рутины. Можно передавать туда что угодно, и оно будет логироваться в метрике.
Просто подвешиваете yaCounterXXXXXX.reachGoal() с нужными вам параметрами на нужные кнопки и вуаля.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект