码迷,mamicode.com
首页 > 数据库 > 详细

关于用户登录状态存session,cookie还是数据库或者memcache的优劣

时间:2014-10-20 13:18:39      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:http   io   数据   on   问题   ad   as   数据库   服务器   

session中保存登陆状态:
优:整个应用可以从session中获取用户信息,并且查询时很方便.在session中保存用户信息是不可缺少的(web应用中)
缺:session中不宜保存大量信息,会增减内存消耗量

cookie中保存登陆状态:
优:数据保存在客户端,方便用户下次登录.如:”记住我“功能
缺:安全性不高,一般都是讲数据加密后保存在cookie中

memcache应用主要体现在对大量数据的cache,如:将经常用到的数据保存在memcache中,减少对数据库的访问次数,在web应用中也是不可缺少的
缺:当cache爆掉后,造成数据丢失

从效率考虑:cookie > memcache > 数据库
cookie对服务器端负载没影响,如果加密、解密会多消耗一点点cpu。带宽倒是会消耗得多一点,同域名下的所有http request header都会附带cookie,所以在大流量下,把js、css、图片放到另外一个域名下会节约掉这部分流量。
memcache会占用一些服务器内存
数据库连接本来就是典型的瓶颈,能免则免

从安全性考虑:memcache/数据库 > cookie
cookie存放在客户端,需要考虑的安全性比较多一点
memcache、数据库都在服务器端,相对cookie来说会稍微安全点

从服务器可扩展性考虑:cookie > memcache/数据库
如果有多台后端服务器,就需要共享session数据
memcache、数据库都可以做到在多台服务器之间共享session,但是容易形成单点瓶颈,大负载下需要考虑存储路由之类
cookie完全不需要在服务器端共享session数据,与REST无状态风格暗合

可扩展性这个点也不是绝对,如果用nginx的ip_hash方式组织多个后端upstream就不需要共享session,但这些都需要后端架构上的考虑和设计,而cookie则完全没有这方面的扩展性问题

增补:cookie其实也不是在扩展性上没有任何问题需要考虑,说“完全没有”有点绝对了,可扩展性这种事情,复杂度比较高,需要实际问题实际分析。在比较简单理想的情况下,cookie的可扩展性会比较好点

关于用户登录状态存session,cookie还是数据库或者memcache的优劣

标签:http   io   数据   on   问题   ad   as   数据库   服务器   

原文地址:http://www.cnblogs.com/bwzhangtao/p/4036794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!