请教 ViewState,Session,Cache,Cookie的生存周期,性能,使用场合等

felix1200 2005-06-03 11:05:44
如题.
...全文
743 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
极客行天下 2005-07-20
  • 打赏
  • 举报
回复
关注
coolylh 2005-07-20
  • 打赏
  • 举报
回复
mark
haitoo 2005-07-20
  • 打赏
  • 举报
回复
mark
renyu732 2005-06-23
  • 打赏
  • 举报
回复
jf
yushulingfeng 2005-06-23
  • 打赏
  • 举报
回复
精彩的回贴,顶!
keiven 2005-06-23
  • 打赏
  • 举报
回复
mark
cxy89173 2005-06-21
  • 打赏
  • 举报
回复
楼上讲得真明白。
hchxxzx 2005-06-21
  • 打赏
  • 举报
回复
SESSION是可以存储针对与某一个用户的IE以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。

先研究SESSION是如何启动的,当打开IE以后浏览网站后会发出一个指令请求SESSIONID以及对各个类型数据的下载许可,如图片,声音以及FLASH。
数据实际传输内容:IE到服务器
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Language0: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host:www.jh521.com
Connection: Keep-Alive

服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储并同时返回相关页面的下载数据,如下:服务器到IE
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 30 Nov 2003 16:41:51 GMT
Content-Length: 21174..Content-Type: text/html
Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/
Cache-control: private
然后就是页面HTML代码

此时这个IE程序(不是客户机)的SESSIONID就为IBOMFONAOJFEEBHBPIENJFFC

而当IE在访问任何这个站点的ASP程序的时候,就会把IBOMFONAOJFEEBHBPIENJFFC发送给服务器,服务器就会知道IBOMFONAOJFEEBHBPIENJFFC是表示你
而在服务器上设置SESSION("name")="name"
完全可以看成是
SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name"
或者
SESSION(SESSIONID)("name")="name"
这样,SESSION就区分开用户了。
而当服务器反馈这个ID的时候会看这个ID有没有被使用。如果有在换一个。反正不会让你重复,如果想模拟某人的SESSION的ID来进行欺骗是可以的。不过要获取到对方IE传输信号,并且在保证当时这个SESSIONID没有被取消的情况下才可能实施。不过要是有那时间不如直接通过POST信号找他NAME和PASS了。

再看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来讲他们不属于同类

但是属于一种工作模式,用户和服务器传输私有数据

当设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并存放,在访问这个站点并且COOKID有效的时候可以取得这个信息。

COOKIE和SESSION的区别

有效时间以及存储方式 传输内容
COOKIE 可设置并在本地保留 明码信息
SESSION 在IE不关闭并服务器不超时 只有SESSIONID

当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE,因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前)
而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录
在下次登入的时候会请求新的SESSIONID

而服务器想通过用户个人变量校验用户的状态的时候,就不能用COOKIE
如果用设置用户权限是USER。而IE访问的时候就把USER的明码传输到服务器。
那么如果我通过一定手段,比如直接修改COOKIE记录,把USER修改成ADMIN呢~~
就麻烦了。

但存储用户名和密码或者网站的配色方案这样的信息,用COOKIE是最好的

此外,再说说Request.ServerVariables("HTTP_REFERER")

有一些人通过这个Request.ServerVariables("HTTP_REFERER")
来进行一些关键性限制,特别是对付远程提交以及非法侵入。
那么我就要提醒下服务器取得的HTTP_REFERER信息完全是IE传输给服务器的,可以模拟
而且难度不大,用不到半个小时就可以用VB做出一个针对HTTP_REFERER入侵程序。

网友的一个不错的比喻:
COOKIE 是本地文件,是40大盗在阿里巴巴家做的记号,
或者是送牛奶的人在你家门口钉的箱子。
SESSION 是服务器端内存,是你洗澡时浴池发给你的钥匙。
自己专用,可以开自己的好多箱子。
APPLICATION 是公共浴池。
在这里能看见所有人,包括ppmm哦:)。
tonrew 2005-06-21
  • 打赏
  • 举报
回复
mark
felix1200 2005-06-15
  • 打赏
  • 举报
回复
顶一下,,沉了
felix1200 2005-06-07
  • 打赏
  • 举报
回复
好像说的不是很清楚啊,,,
hubinasm 2005-06-05
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/msdnmag/issues/03/04/ASPNETUserState/default.aspx
bandt 2005-06-03
  • 打赏
  • 举报
回复
具体使用去看msdn吧,很清楚的!楼主揭帖吧!
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemwebhttpresponseclasscachetopic.asp
felix1200 2005-06-03
  • 打赏
  • 举报
回复
谢谢回答,能说说具体怎么使用吗?
renyu732 2005-06-03
  • 打赏
  • 举报
回复
Cache:实现用于 Web 应用程序的缓存。无法继承此类。
Cache 使您得以存储数据供将来检索和在应用程序间共享。您存储的数据与当前页或用户会话无关。如果创建数据很慢,则通过此属性访问数据可提升页或应用程序的性能。
fengfangfang 2005-06-03
  • 打赏
  • 举报
回复
ViewState是页面级的
apllication,Session,Cache,Cookie是跨页面级的
application是应用级的
Session是会话级的
Cache与缓存时间和大小有关
Cookie是客户端保存的,通常也是会话级的
felix1200 2005-06-03
  • 打赏
  • 举报
回复
补充:还有apllication
felix1200 2005-06-03
  • 打赏
  • 举报
回复
先去看看,,

62,016

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧