避免匿名用户启动Session
每当你读、写、甚至检查数据是否存在于session时,session都会自动启动。这意味着,如果你要避免为一些用户创建session cookie会很困难:你必须完全避免访问session。
例如,在这种情况下的一个常见的问题,是检查flash消息,它被存储在session中。下面的代码将确定令session 始终 开启:
1 2 3 4 5 |
{% for flashMessage in app.session.flashBag.get('notice') %}
<div class="flash-notice">
{{ flashMessage }}
</div>
{% endfor %} |
即便用户没有登录,即便你没有创建任何的flash消息,只是调用flashBag
的get()
(或者has()
)方法,则也会开启session。这会影响程序性能,因为所有的用户都将收到一个session cookie。为了避免这一行为,在尝试访问flash消息之前添加一个检查:
1 2 3 4 5 6 7 |
{% if app.request.hasPreviousSession %}
{% for flashMessage in app.session.flashBag.get('notice') %}
<div class="flash-notice">
{{ flashMessage }}
</div>
{% endfor %}
{% endif %} |