Моя страница Symfony не слишком медленная (она загружается примерно через 400 мс), но, учитывая тот факт, что это просто простая страница приветствия с базовой аутентификацией, она должна быть загружена менее чем за 100 мс. Когда я вхожу профилировщика, я вижу это:Что делает брандмауэр Symfony так долго?
Обратите внимание, это только говорит «Firewall» на 250 мс. Я думал, что брандмауэр был просто ответственен за то, что пользователи не попали в определенные области страницы - я не могу себе представить, что это займет не более нескольких миллисекунд плюс время, необходимое для получения пользовательской информации из базы данных (которая в этом случае 61 мс).
Может кто-нибудь объяснить, что на самом деле делает брандмауэр? Если у вас есть общие указатели о том, как повысить производительность брандмауэра, это будет очень полезно.
Примечание: Я Googled это, конечно, и я хочу, чтобы указать фронт, что я при подключении к базе данных MySQL по IP-адресу, а не имя хоста. Это, похоже, было проблемой для каждого другого случая медленного брандмауэра Symfony, который я мог найти.
Некоторые ресурсы из моего проекта, которые могут иметь отношение:
- security.yaml
- routing.yaml
- Astrups/SpectacleBundle/Entity/User.php
- Astrups/SpectacleBundle/Service/Sha1Salted.php
Я бы предположил, что выполняет все правила в security.yml, разделы управления провайдерами, acess и брандмауэрами могут стать довольно неприятными, проверка всех этих запросов на каждый запрос занимает много времени. –
@ xr09: 251 мс * действительно * долгое время (в компьютерное время). Я не вижу никакого способа просто прочитать кэшированную конфигурацию и применить ее к контексту безопасности, может зайти так близко. – Hubro
Я только что заметил, ваш «Astrups/SpectacleBundle/Entity/User.php» нарушает принцип «Single Responsibility» **. – Yang