cookie和session存储位置 ASP.NET中Session和Cache的区别总结?

[更新]
·
·
分类:互联网
1478 阅读

cookie和session存储位置

中Session和Cache的区别总结?

ASP.NET中Session和Cache的区别总结?

这篇文章主要介绍了中Session和Cache的区别总结,本文结合使用经验,总结出了5点Session缓存和Cache缓存的区别,需要的朋友可以参考下   以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application。其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息。Session则保存对话信息。Application则是保存在整个应用程序范围内的信息,相当于全局变量。通常使用最频繁的是Session,那么Session和Cache又有什么区别呢?   本节结合使用经验,详细介绍Session缓存和Cache缓存的区别。   (1)最大的区别是Cache提供缓存依赖来更新数据,而Session只能依靠定义的缓存时间来判断缓存数据是否有效。   (2)即使应用程序终止,只要方法中定义的缓存时间未过期,下次开启应用程序时,缓存的数据依然存在。而Session缓存只是存在于一次会话中,会话结束后,数据也就失效了。   (3)Session容易丢失,导致数据的不确定性,而Cache不会出现这种情况。   (4)由于Session是每次会话就被加载,所以不适宜存放大量信息,否则会导致服务器的性能降低。而Cache则主要用来保存大容量信息,如数据库中的多个表。   (5)VS2005的测试版提供了将缓存保存在硬盘上的参数,但正式版中取消了这个功能,估计其在以后版本中会重新实现。而Session目前只能保存在内存中,对其性能有影响。

PHP与NodeJS如何共用Session?

随着项目的发展,技术架构方案也是会慢慢演变的。比如说淘宝最早期是由单纯的PHP开发的站点,到现在单一架构模式已满足不了其发展需要,于是乎演变成了异构模式(即:多种技术的混合架构模式)。
现在市面上的开发语言众多,同一个产品线的多个子项目采用不同的编程语言开发也是很常见的。但对于不同语言开发的站点默认情况下Session是无法共用的,那么在异构模式下如何实现Session互通呢?下面给大家具体分析一下。
Session运行原理要想弄清楚不同语言间的Session互通问题,我们就要先了解Session的实现机制原理是什么。
大家都知道,HTTP协议本身是无状态的,客户端每次发出的请求在服务器端看来都是独立的,服务器端也无法得知哪些请求是同一个用户发出的。在这种机制下,有些需要状态保持的场景(如登录)就存在一些问题,于是就有了Cookie和Session。
举个例子来帮助大家理解一下:
因为HTTP协议无状态的特性,如果服务器端要辨识用户请求就需要给用户发一个“通行证”,拿到通行证的用户每次请求服务器时都会把这个通行证带上,这样一来服务器就知道拿着这个通行证的用户发出了哪些请求。那服务器是不是看到用户的“通行证”就直接放行呢?自然不是,对于某些操作,服务器端也要验证用户的“通行证”是否和服务器端存储的“用户档案”对得上。在这里,服务器端存储的用户档案就是Session,档案上的用户唯一编号就是SessionID,用户的唯一编号也会作为用户“通行证”的一部分发放给用户存储(存储在浏览器Cookie中)。
总结来说,Cookie是为了解决HTTP协议无状态的缺陷而推出的,而Session是一种在客户端和服务器端保持状态的解决方案。
PHP与Node.js如何实现Session共用?在这种异构模式下要实现Session共用,那就需要保证各自的SessionID是共用的,所以我给的解决方案如下:
1、PHP与Node.js客户端要保证存储SessionID的Cookie Name一致,如果Cookie的名称不统一也没关系,但要保证对于同一个客户的SessionID要一致。
2、服务器端的Session要集中到一处管理,这样PHP和Node.js都能获取到Session。比如说可以把Session存储在数据库中或者Redis中。
3、如果给Cookie作了加密,那要保证PHP与Node.js两端的加解密规则一致。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!