ASP.NET:Application,Session,Cookie,ViewState和Cache之间的区别(转)
在ASP.NET中,有很多种保存信息的对象。例如:Application,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?
为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示:
方法 | 信息量大小 | 保存时间 | 应用范围 | 保存位置 |
---|---|---|---|---|
Application | 任意大小 | 整个应用程序的生命期 | 所有用户 | 服务器端 |
Session | 小量、简单的数据 | 用户活动时间+一段延迟时间(一般为20分钟) | 单个用户 | 服务器端 |
Cookie | 小量、简单的数据 | 可以根据需要设定 | 单个用户 | 客户端 |
Viewstate | 小量、简单的数据 | 一个Web页面的生命期 | 单个用户 | 客户端 |
Cache | 任意大小 | 可以根据需要设定 | 所有用户 | 服务器端 |
隐藏域 | 小量、简单的数据 | 一个Web页面的生命期 | 单个用户 | 客户端 |
查询字符串 | 小量、简单的数据 | 直到下次页面跳转请求 | 单个用户 | 客户端 |
Web.Config文件 | 不变或极少改变的小量数据 | 直到配置文件被更新 | 单个用户 | 服务器端 |
Application
1、Application用来保存所有用户共用的信息;
2、在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Application是理想的选择。但是在Asp.Net开发环境中我们把类似的配置数据放在Web.config中;
3、如果要使用Application要注意的是所有的写操作都要在Application_OnStart事件中完成(global.Asax),尽管可以使用Application.Lock()避免了冲突,但是它串行化了对Application的请求,会产生严重的性能瓶颈;
4、不要使用Application保存大数据量信息;
5、代码:
写:Application["UserID"] = "test";
读:string UserName = Application["UserID"].ToString();
Session
1、Session用来保存每一个用户的专有信息;
2、Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右);
3、Session信息是保存在Web服务器内存中的,保存数据量可大可小;
4、Session超时或者被关闭将自动释放数据信息;
5、由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低;
6、代码:
写:Session["UserID"] = "test";
读:string UserName = Session["UserID"].ToString();
Cookie
1、Cookie用来保存客户浏览器请求服务器页面的请求信息;
2、我们可以存放非敏感的用户信息,保存时间可以根据需要设置;
3、如果没有设置Cookie失效日期,它的生命周期保存到关闭浏览器为止;
4、Cookie对象的Expires属性设置为MinValue表示永不过期;
5、Cookie存储的数据量受限制,大多数的浏览器为4K因此不要存放大数据;
6、由于并非所有的浏览器都支持Cookie,数据将以明文的形式保存在客户端;
7、代码:
写:Resopnse.Cookies["UserID"] = "test";
读:string UserName = Resopnse.Cookies["UserID"].ToString();
ViewState
1、ViewState用来保存用户的状态信息,有效期等于页面的生命周期;
2、可以保存大量数据但是要慎用,因为会影响程序性能;
3、所有的Web服务器控件都是用ViewState在页面PostBack期间保存状态;
4、不需要则关闭 @page 里面设置EnableViewState=false;
5、代码:
写:ViewState["ID"] = "test";
读:string ID = ViewState["ID"].ToString();
Cache
1、Cache用于在Http请求期间保存页面或者数据;
2、Cache的使用可以大大的提高整个应用程序的效率;
3、它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后,服务器不是再次处理而是将Cache中保存的数据直接返回给用户;
4、可以看出Cache节省的是时间(服务器处理时间);
5、Cache实例是每一个应用程序专有的,其生命周期==该应用程序周期,应用程序重启将重新创建其实例;
6、注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert 或者Add方法方法添加信息;
7、代码:
写:Cache["ID"] = "test"; 或者 Cache.Insert("ID","test");
读:string ID = Cache["ID"].ToString();
Hidden
1、Hidden控件属于html类型的服务器控件,始终处于隐藏状态;
2、每一次提交的时候它会和其他服务器控件一起提交到服务器端;
3、代码:
写:Hidden.Value = "king";
读:string id = Hidden.Value; 要使用Runat=server
查询字符串
1、查询字符串的方式是将要传递的值连接在URL后面;
2、一般用于页面之间传递信息;
3、由于URL的长度有一定的限制,因此不能传递太大的信息;
4、安全性不是很好。
5、代码:
传值页面:Response.Redirect("List.aspx?id=123&name=abc");
取值页面:string name = Request.QueryString["name"]; string id = Request.QueryString["id"];
ASP.NET:Application,Session,Cookie,ViewState和Cache之间的区别(转)的更多相关文章
- APPlication,Session,Cookie,ViewState和Cache之间的区别
1.Application:用于保存所有用户共用的数据信息. 在Asp.Net中类似的配置数据最好保存在Web.config文件中.如果使用Application对象,一个需要考虑的问题是任何写操作都 ...
- Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别
2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...
- Application,Session,Cookie,ViewState和Cache区别
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
- [区别]APPlication,Session,Cookie,ViewState和Cache
原文发布时间为:2009-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewS ...
- ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
- (转)Application, Session, Cookie, Viewstate, Cache对象用法和区别
================================================================================ 1.Applicati ...
- Application,Session,Cookie,ViewState,Cache对象用法、作用域的区别
1.Application:用于保存所有用户共用的数据信息.在Asp.Net中类似的配置数据最好保存在Web.config文件中.如果使用Application对象,一个需要考虑的问题是任何写操作都要 ...
- .NET Application,Session,Cookie,ViewState,Cache对象用法
作用域 保存地址 生命周期Application 应用程序 服务器内存 IIS启动Session 整个站点 服务器内存 Session到时 默认20分钟Cashe 应用程序 服务器内存 应用程序的周期 ...
- 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法
转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...
随机推荐
- Qt's Undo Framework
Overview of Qt's Undo Framework Introduction Qt's Undo Framework is an implementation of the Command ...
- js输出/获得Cookie
js输出/获得Cookie //方法 1 function setCookie(name, value) { var Days = 365; var exp = new Date(); exp.set ...
- Makefiles in Linux
http://www.codeproject.com/Articles/31488/Makefiles-in-Linux-An-Overview
- 将Halcon导出的多个dxf文件合并成一个分图层的dxf文件
Halcon中可以通过concat_obj合并多个XLD,并且可以通过write_contour_xld_dxf再将XLD保存为.dxf文件.但是,保存后的.dxf文件用AutoCAD打开后发现,它们 ...
- python动态捕获异常-乾颐堂
在讨论动态捕获异常时让我大吃一惊的是,可以让我找到隐藏的Bug和乐趣... 有问题的代码 下面的代码来自一个产品中看起来是好的抽象代码 - slightly(!) .这是调用一些统计数据的函数,然后进 ...
- entity_class实体类
对应数据库中表,并继承基础模型类~
- UVa 1615 Highway (贪心,区间选点问题)
题意:给定一个数 n 个点,和一个d,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里德距离不超过d. 析:首先这是一个贪心的题目,并且是区间选点问题,什么是区间选点呢, ...
- Hadoop-2.7.2分布式安装手册
目录 目录 1 1. 前言 3 2. 特性介绍 3 3. 部署 5 3.1. 机器列表 5 3.2. 主机名 5 3.2.1. 临时修改主机名 6 3.2.2. 永久修改主机名 6 3.3. 免密码登 ...
- 9、Dockerfile语法
在Dockerfile中定义了很多关键字,通过关键字来完成Dockerfile的编写. Dockerfile官方文档 9.1 FROM 在Dockerfile中FROM主要是指定这个Doc ...
- Oracle Submit Request - 请求的调用方法: FND_REQUEST.SUBMIT_REQUEST
废话: 有一段时间没搞过开发了,做项目又要重新找回点开发的记忆.重新拾回一点点零碎. 跑多了产线,配置的一些参数也忘记得差不多了,长时间没动就是易遗忘,找点资料做个笔记就是时间保镖. 正题: FN ...