(1)存储在服务端
(a)Session:为每个用创建的.用于存储单个用户,因为他是相对每个用户的.所以可能来取得在线人数等.
(b)ViewState跟Session的功能很像,但是ViewState只是Session的一个子集.因为它只对单个session用户的.单个页面,所以它又叫单个页的Session;
(c)Application用于存储所有用户都可视的信息.所以它存储的是要让所有用户共享的一些信息.如总访问数等;
(d)cache的功能是Application的扩展,它由Application的基本的功能,又有自己的新特征如超时;而Application只有服务器重启才会消失.cache中还有而面性质的快取.outputCache.此功能可存取得整个页面的返回信息.不管是谁的访问,所以为了区分这些信息,它又有Duration和VaryByParam属性;还有个片断缓冲,它是用于页面被调用页,然用VaryByControl.这几个读者可自行找些网上资料看.
(2)存储在服务端
(a)cookie 其实它也可以存储在服务器端,但是大部份我们都把它放在客户端浏览器,大多数,我们用它存储用户的个性设制,和登陆信息.
综上,我们总结出一些常见而典型的例子:
电子商务网站的购物车:使用Session,因为购物车信息是会话相关的而且安全性很重要。
论坛或其它网站的“记住我”功能:使用Cookie,因为这是保存的往往只是一个用户名,而且当用户下次登陆时还需要这个用户名仍然存在。
站点计数器:如果您不用数据库的话那就是使用Application了,因为计数器是会话无关的。但是即使在使用数据库的情况下我也建议你同时使用Application来保存计数值,然后再每隔一段时间保存到数据库里去,因为这样可以减少访问数据库的次数以提高性能。
产品信息:Cache是优先的选择,因为产品信息通常是与会话无关、修改频率低且访问频率高的数据,使用Cache来保存可以有效地提高网站的性能。
最后,我们给出一个表格,列出以上几种数据持久化方式的特性对比,以便您做出决定:
|
Application |
Cache |
Session |
Cookie |
ViewState |
存储位置 |
服务器 |
服务器 |
服务器 |
客户端 |
客户端 |
是否会被主动丢弃 |
不会 |
会 |
不会 |
不会 |
不会 |
与会话相关 |
否 |
否 |
是 |
是 |
是 |
是否被序列化 |
否 |
否 |
否 |
是 |
是 |
是否发生服务器-客户端传输 |
否 |
否 |
否 |
是 |
是(默认情况) |
是否被加密 |
否 |
否 |
否 |
是 |
否(默认情况) |