我在会话中存储了很多变量,这会产生性能问题。 所以,我被要求将它存储在其他地方,我可以将它存储在数据库中,但这又会很慢。
存储会话变量有更好的替代方法吗? 全局变量是每个文件/请求。虽然cookie会向用户打开变量,但不会保留服务器端。
提前感谢您的回答!
答案 0 :(得分:5)
考虑memcached
这样的半持久数据。将缓存密钥存储在$_SESSION
中,然后使用它来获取缓存的数据。
由于memcached
将所有内容缓存在内存中(并且严格来说是键值存储),因此它比数据库更快。它对于像会话这样的东西来说有点理想,因为如果你碰巧丢失了缓存的数据,就不会丢失任何严重的东西(用户只是意外地被注销)。
实际上,PHP Memcache实现provides a session handler(参见示例#2)可以透明地为您处理会话,而无需您对代码进行任何修改。
答案 1 :(得分:2)
php会话可以配置为以多种方式工作。如果服务器上有足够的可用内存,可以从内存缓存中运行它。这将是高性能
您也可以使用数据库存储会话信息,但正如您所说,这可能会很慢。
为什么它目前会产生性能问题? 是否有大量会话正在创建,或者您是否在会话中存储了大量数据?
答案 2 :(得分:0)
这取决于有多少变量“很多”? rails的默认会话存储使用cookie,这通常对我来说足够了。如果您担心暴露变量,cookie会被加密。你必须拥有服务器端吗?使用html5,您可以使用localStorage选项。