大型网站用户登录信息保存实现的探讨

虽然写过近3年的.net程序,网站也写过不下2,30个。但是从来没有认真考虑过大型网站应该如何保存用户登录信息,才不会造成负载方面的问题。就在今天早上,一个朋友的网站运营方面出现了问题,在用户量同时在线达到12000人左右的时候大面积出现页面无法打开,新用户排队时间过长以及甚至出现了崩溃的情况。于是他把这个难题交给我,问我能否解决。

  我花了一整天的时间去搜索大型网站对于用户登录信息保存的优化方案的时候,往往更多见到的网友们对于大型网站是采用Session方式还是Cookie方式争执不下。基本上能见到的是以下两种说法:

  一、支持session方式

  1.Session更加安全,即使Session ID被劫持,Session内部的信息也不能轻易取得

      2.Session方便在一个系统包含多个子系统之间的进行传值。

  3.Session本身会话具备默认有效期,对用户会话有效期控制不用做过多设置,且使用方便

  4.cookie方式不安全,特别是今年黑帽大会上,通过演示cookie劫持,彻底攻破以cookie使用为主的yahoo门户

  5.Session虽说占用服务器资源,但是这个完全可以通过服务器集群,负载均衡等方式予以解决。

  6.对于提出的Session丢失数据等,可以采用stste Server来保存session信息,此问题迎刃而解。

  ...etc.

  二、支持cookie方式

  1.Session更多的是以消耗服务器资源的,高并发访问无疑对数据库和服务器是一个巨大挑战。

  2.cookie在安全方面完全可以采用特殊的加密手段对关键信息予以加密,在服务器端解密获得关键信息,将对服务器压力转嫁到用户客户端上

      3.如果采用cookie,一样通过cookie方式规定会话有效时间

      4.Session在高并发下,时常发生意外丢失等对网站登录方面造成不小的困扰。

  ...ect..

  还有的更多折中的选择,在关键信息上采用session保存,而非关键信息采用cookie方式保存。我比较支持这种做法,但是对于这个方面,特别是高并发方面的开发经验基本空白,特意发出来大家探讨一下,希望能得到大家的帮助。

原文地址:https://www.cnblogs.com/funying/p/2088173.html