Я только что заметил, как отключение безопасности с помощью MVC Sitemap на сайте ASP.NET MVC 5.x может значительно замедлить веб-запросы.
Я собрал из документация , что при включении security trimming
провайдер карты сайта MVC создает в экземпляре каждого контроллера в карте сайта, чтобы проверить, должен ли узел быть видимым или нет для текущего пользователя (для каждого веб-запроса).
Я также прочитал , что он кэшируется для каждого веб-запроса, чтобы сохранить воздействие как можно ниже.
Такое поведение обычно оставалось незамеченным для нас, когда большинство зависимостей нашего контроллерагде управлялся как singleton
нашей средой IoC (что означает, что получение экземпляра контроллера было очень быстрым).
В последнее время наши требования изменились, и большинство наших зависимостей имеют стиль жизни для каждого веб-запроса, который имел огромныйНегативное влияние на производительность поставщика MVC Sitemap: на наших машинах разработки более 5 секунд (!) для того, чтобы карта сайта mvc сделала свое дело (вstantiate all constructors).
Можно ли что-нибудь сделать, чтобы ускорить процесс, когда включена функция безопасности?
Примечания:
Вероятно, стоит упомянутьмы следуем рекомендациям не делать что-либо в нашем конструкторе appart (присваивать параметры переменным экземпляра или свойствам), чтобы избежать дальнейшего замедления.
Мы также придерживаемся атрибута Authorize по умолчанию, предоставленного Microsoft.