В Справочном руководстве по шву можно найти этот абзац:
Мы можем установить разумное значение по умолчанию для времени ожидания одновременного запроса (в мс) в файле component.xml:
<core:manager concurrent-request-timeout="500" />
Однако мы обнаружили, что 500 мс - это недостаточное время для большинства случаев, с которыми нам приходилось иметь дело, особенно из-за строгих ограничений на доступ к разговору.
В нашем приложении мы имеем комбинацию запросов ajax на уровне страниц (инициируемых различными действиями пользователя), некоторой глобальной логики уведомлений об опросе (часть заголовка, включенной в каждую страницу) и обычных ссылок, которые вызывают действия и / или перейти на другие страницы.
Поэтому мы слишком часто получаем страшный параллельный доступ к исключениям разговоров, даже без значительной нагрузки на сайт.
После тщательного изучения вариантов мы в конечном итоге увеличили это значение до нескольких секунд (обсуждаем, стоит ли увеличивать его до 10 с), поскольку ни одно из рекомендуемых решений не могло полностью решить нашу проблему (даже форсирование глобальной очереди для всех запросов ajax по-прежнему оставит нас открытыми для пользователя, который решит щелкнуть ссылку прямо во время выполнения одного из наших опросов). И мы бы предпочли, чтобы пользователи подождали секунду или две вместо того, чтобы получить страницу с ошибкой только потому, что они нажали на ссылку в неподходящий момент.
А теперь вопрос: есть ли что-то очевидное, чего нам не хватает (например, способ обеспечить одновременный доступ к разговорам и самостоятельно позаботиться о необходимой блокировке, например :)? Как люди решают эту проблему (запросы ajax, смешанные с пользовательским взаимодействием) в шве? Отключение всех ссылок на странице во время выполнения ajax-запросов (как предложено на одной странице блога) на самом деле не является жизнеспособным вариантом.
Есть другие предложения?
ТИА,
Андрей