Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Как отследить и ограничить большое количество однородных запросов на сайте
Очень легко случайно положить в таблицу разметку другого компонента, и это приведет к многократному вызову вложенных компонентов.
Например, если у вас 50 строк в таблице, и вы положили в каждую строку по 2 сниппета формы, то это приведет к 2 * 50 дополнительным запросам, которые создадут ненужную нагрузку на сервер. И это только от одного пользователя. А если он открыл 5-10 подобных страниц сразу? А если несколько пользователей сделают одновременно подобные действия? В итоге получается, что при небольшой посещаемости создается значительная нагрузка по запросам к серверу и БД.
Как этого избежать - очень просто, использовать as-form-modal, as-form-link, sub_ и modal_ поля строки таблицы. Таким образом загрузка конкретной формы будет идти только по клику пользователя. Т.е. средства как правильно сделать есть, но никто не застрахован от ошибок, а нужен инструмент выявления и правильной обработки подобных ситуаций.
В этой статье мы рассмотрим механизм как защититься от таких "невзгод".
Для этого в системе предусмотрены специальные настройки в as.systemOptions:
{ "disableDebugMode": false, // возможность отключить показ отладочных сообщений в консоли браузера
"doubleRequests.disableCheck": false, // отключить контроль количества одинаковых запросов на странице
"doubleRequests.count": 3, // порог по количеству запросов, после которого будет идти уведомление в trace с кодом dblreq
"doubleRequests.countLimit": 4, // после превышения данного порога запрос будет отбрасываться и выводиться сообщение юзеру
"doubleRequests.duration": 2000, // длительность в течение которого учитывается количество запросов (в миллисекундах)
}
В случае наступления 1 порога (count), мы просто фиксируем это в trace. В случае наступления 2 порога - блокируем запросы и выводим на странице сообщение. Это предотвратит чрезмерную загрузку сервера.
В профилактике проекта можно добавить такой запрос для выявления этих ситуаций:
-- show too many dublicate requests per page
select top 200 itemID reqCount,
dbo.as_stripHTML(replace(text, '
', char(10))) text,
convert(nvarchar(20), created, 120) + iif(len(username)>0, ' - ' + username, '') details
from as_trace where code='dblreq' order by id desc
Таким образом, периодически, смотря в профилактику, можно обнаружить подобные ситуации.
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта