Symfony2在会话与数据库中存储数据调用每个页面加载

时间:2014-12-01 17:02:32

标签: php database symfony session

我有一个基于Symfony 2构建的网站,它基本上由各种应用程序组成。选择应用程序后,我将该应用程序的ID存储在会话变量中。然后,对于该应用程序的每个页面加载,将查询数据库以获取该应用程序的详细信息。

将应用程序详细信息存储在会话变量中而不仅仅是应用程序ID中会不会更有效率?

以这种方式存储应用程序详细信息的缺点是什么,是否存在我需要担心的安全风险?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我不建议在会话中存储应用程序编号。当您的所有请求变为HTTP导致响应取决于SESSION值时,您不得使用该方法http://symfony.com/doc/current/book/http_cache.html#public-vs-private-responses来使用共享private缓存。

如果您将应用程序编号移动到网址或标题等,您将获得大量优化空间。

将数据库用于获取应用信息是一种非常好的做法,因为您可以为此查询启用doctrine的结果缓存,使其不会影响应用性能。 http://doctrine-orm.readthedocs.org/en/latest/reference/caching.html#result-cache

使用会话来存储app_id是不好的做法,但是会话用于存储所有应用信息的情况更糟糕,因为session_id的数量很大并且您将存储大量冗余信息。