Является ли отправка запроса Ajax на каждый клик дорого на клиенте с точки зрения производительности? - PullRequest
0 голосов
/ 08 февраля 2012

Считается ли $("*").click(function(){...}) дорогим? - См. Здесь .

Как насчет отправки ajax-запроса на каждый клик?

Будет ли этовызвать заметную (перф?) проблему для обычных пользователей?Приложение - это не игра, в которой нужно быстро щелкать мышкой ... просто обычное веб-приложение.Я полагаю, что клики относительно редки.

Взять Stack Overflow в качестве примера сайта - если бы это было сделано на SO, будет ли это дорого?

Примечание - из связанного вопроса яполучите уведомление о том, что $("*").click() будет иметь ужасную производительность, по крайней мере, в некоторых браузерах.Есть ли лучшая техника, позволяющая делать то, что я хочу (отправлять ajax-запрос при каждом клике), без лишних усилий?Является ли live () ответом?

Примечание - Я сосредоточен на клиенте, потому что не ожидаю огромное количество одновременных пользователей.Я считаю, что сервер может справиться с этим.

Ответы [ 4 ]

1 голос
/ 08 февраля 2012

Если вы хотите отлавливать клики повсюду, вы должны использовать метод delegate вместо привязки всех элементов:

$('body').delegate('*', 'click', function(){ ... });

Это будет привязывать один обработчик событий к элементу body и обрабатывать события, когда они всплывают из элементов, по которым щелкнули.

Отправка AJAX-запроса при каждом клике не сильно повлияет на браузер, но может иметь большое значение на сервере, если у вас много пользователей. Кроме того, если кто-то щелкнет несколько раз подряд, запросы будут помещены в очередь на сервере, и потребуется время, чтобы все ответы вернулись в браузер.

1 голос
/ 08 февраля 2012

Клиент, если вы не отправляете слишком много запросов ajax одновременно, все должно быть в порядке. Я обнаружил, что когда у меня запущено около 30 открытых запросов AJAX, это сильно замедляет работу (даже в Chrome, который может зависнуть).

Ваша проблема может быть больше на стороне сервера, которая должна обрабатывать все эти запросы.

Обновление

$(document.body).on('click' , function(e) {
   //here i handle all clicks in the document
   //the source of the click is
   var src = e.target;
});
0 голосов
/ 08 февраля 2012

Если вы отправляете запросы к серверу на каждое событие клика, это может создать нагрузку на сервер.Подумайте, есть ли у вас 100 человек, использующих его одновременно, и они нажимают каждые 3 секунды - через 10 секунд, это более 900 запросов, которые веб-сервер должен отправить на ответы.

Будьте осторожны при этом.Если вы идете по этому пути, обязательно воспользуйтесь кэшированием браузера для ответов.

0 голосов
/ 08 февраля 2012

Нах!Аякс просит за кадром счастье.Ваши пользователи не заметят.Все инструменты аналитики используют это, поэтому мне интересно, почему мы должны беспокоиться об этом.

Stackoverflow Я почти уверен, что у них будут свои трекеры, работающие за кулисами.

Если у вас хорошее оборудованиеи хорошая пропускная способность должна быть в порядке со всеми средствами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...