Избегание запуска сессий для анонимных пользователей
Избегание запуска сессий для анонимных пользователей
Сессии запускаются автоматически каждый раз, когда вы читаете, пишете или даже проверяете наличие данных в сессии. это означает, что если вам нужно избежать создания cookie сессии для некоторых пользователей, то это может быть сложно: вам нужно полностью избежать допуска к сессии.
Например, распространённая проблема в этой ситуации включает в себя поиск флеш- сообщений. который хранятся в сессии. Следующий код будет гарантировать, что сессия будет запускаться всегда:
1 2 3 4 5
{% for message in app.flashes('notice') %}
<div class="flash-notice">
{{ message }}
</div>
{% endfor %}
Даже если пользователь не выполнил вход, и даже если вы не создавали никаких флеш-
сообщений, простой вызов метода get()
(или даже has()
) в flashBag
запустит
сессию. Это может навредить производительности вашего приложения, так как все
пользователи буду получать cookie сессии. Чтобы избежать такого поведения, добавьте
проверку перед тем, как получать доступ к флеш-сообщениям:
1 2 3 4 5 6 7
{% if app.request.hasPreviousSession %}
{% for message in app.flashes('notice') %}
<div class="flash-notice">
{{ message }}
</div>
{% endfor %}
{% endif %}
3.3
Функция Twig app.flashes()
была представлена в Symfony 3.3. Ранее
вам нужно было использовать app.session.flashBag()
.