Application/Session/Cookie/viewstate/Cache/隐藏域/查询字符串的比较
- 博客分类:
- 技术杂绘
Application/Session/Cookie/viewstate/Cache/隐藏域/查询字符串的比较
2010年08月12日
Application
1. Application用来保存所有用户共享的信息,IIS停了就都初始化了
2.在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Application是理想的选择。但是在Asp.net开发环境中我们把类似的配置数据放在Web.config中。
3. 如果要使用Application 要注意的是所有的写操作都要在Application_OnStart事件中完成(global.Asax),尽管可以使用Application.Lock()避免了冲突,但是它串行化了对Application的请求,当网站访问量大的时候会产生严重的性能瓶颈。需建立global.asax,需悲观的锁定Lock/UnLock
4. 不要使用Application保存大数据量信息
5.代码:
Global.asax
void Application_Start(object sender, EventArgs e)
{
Application["a"] = 0;
}
.cs
...( )
{
Application.Lock();
Application["a"] = (int)Application["a"] +1;
sting a = Application["a"].ToString();
Application.UnLock();
}
Session
1.Session用来保存每一个用户的专有信息
2.Session的生存期是用户持续请求时间加上一段时间(默认20分钟)
3.Session信息是保存在Web服务器内存中的,保存数据量可大可小
4.Session超时或者被关闭将自动释放数据信息
5.由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低
6.对于小量的数据Session对象保存还是一个不错的选择
7.asp php等Session是依赖Cookie的,如果用户不接受Cookie,那么Session也不能用;.net摒弃了,只要web.config设置Cookiesless为True,Session就可以自立门户了
8.代码:
//存放信息
Session["UserNameID"]="1000";
//读取信息
String NameID=Session["UserNameID"].ToString();
CooKie
1.Cookie用来保存客户浏览器请求服务器页面的请求信息
2. Cookie以明文方式将数据信息保存在客户端的计算机中,因此最好不要保存敏感的未加密的数据
3. 保存有效期可以根据需要设置,如果没有设置Cookie失效日期,它的生命周期保存到关闭浏览器为止
4.Cookie对象的Expires属性设置为MinValue表示永不过期
5. Cookie存储的数据量受限制,大多数的浏览器为4K,因此不保存放数据集及其他大量数据。
6. 由于并非所有的浏览器都支持Cookie
7.代码:
//存放信息
Response.Cookie["UserNameID"].Value="1000";
//读取信息
String NameID=Response.Cookie["UserNameID"].Value;
HttpCookie nc = new HttpCookie("newcookie");
nc.Values["name"] = "aidd";
nc.Values["age"] = "22";
nc.Values["dt"] = DataTime.Now.ToString();
HttpCookie getcook = Request.Cookies["newcookie"];
Response.Write(getcook.Values["age"]);
viewstate
session viewstate
占用服务器资源 true false
time out true false
存储任何.net类型 true false(只支持strings, integers, Booleans, arrays, ArrayList, hashtable, custom TypeConverters)
加重html负载 false true
session 对整个 application 有效 ,而 viewstate 相当于某个页面的 session
1.常用于保存单个用户的状态信息,有效期等于页面的生命周期
2.可以保存大量的数据但是过多使用会影响应用程序的性能
3.所有Web服务器控件都使用ViewStat在页面回发PostBack期间保存自己的状态信息
4.每个控件都有自己的ViewState,不用时最好关闭以节省资源
5.通过给@Page指令添加"EnableViewState= false"属性可以禁止整个页面的ViewState
6.代码
// save in ViewState
ViewState["SortOrder"] = "DESC";
// read from ViewState
string sortOrder = (string)ViewState["SortOrder"];
Cache
1.Cache用于在Http请求期间保存页面或者数据
2.Cache的使用可以大大的提高整个应用程序的效率
3. 它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后服务器不是再次处理而是将Cache中保存的数据直接返回给用户
4.可以看出Cache节省的时间是服务器处理时间
5.Cache实例是每一个应用程序专有的,其生命周期==该应用程序周期;应用程序重启将重新创建其实例
6.注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert 或者Add方法方法添加信息
7.代码:
//存放信息
Cache["UserNameID"]="1000";
//存放信息
Cache.Insert("UserNameID","1000");
//读取信息
String UserNameID=Cache["UserNameID"].ToString();
隐藏域
1.Hidden控件属于Html类型的服务器控件(要使用Runat=server),可以实现隐藏域的功能,他和其他的控件没什么区别只是不会在浏览器上显示,始终处于隐藏状态。
2. 每一次提交的时候它会和其他服务器控件一起提交到服务器端
3.代码:
//存放信息
Hidden.Value="1000";
//读取信息
String UserNameID=Hidden.Value;
查询字符串
将传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向。
Response.Redirect("User.aspx?UserNameID=10000&LevelD=100");
执行上面的语句后在IE地址栏显示的URL的代码如下:
http://localhost/User.aspx?UserNameID=1000&LevelID=100
当跳转到User.aspx后,可以通过下面代码获得传递的信息:
String UserNameID,LevelD;
UserNameID=Request.Params["UserNameID"];
LevelD=Request["LevelD"];
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fengying0529/archive/2009/09/07/4527957.aspx
发表评论
-
Sharepoint+MOSS分册第2轮筛选结果文章列表
2012-01-20 00:34 731Sharepoint+MOSS分册第2轮筛 ... -
在 Android 平台上应用 Berkeley DB 11gR2 SQL(drop-in模式)(转http://www.cnmsdn.com/html/201004/1270362092ID3134.html)
2012-01-20 00:34 787在 Android 平台上应用 Ber ... -
编程心得
2012-01-20 00:34 680编程心得 2011年03月21日 转自:http://w ... -
在 C# 中通过 P/Invoke 调用Win32 DLL
2012-01-20 00:34 766在 C# 中通过 P/Invoke 调用Win32 DLL ... -
http://www.cnblogs.com/yungboy/archive/2010/05/28/1746376.html
2012-01-20 00:33 867http://www.cnblogs.com/yungboy/ ... -
10] 建立C帝国(GDAL编译安装以及一般的C库编译步骤)
2012-01-19 01:31 88910] 建立C帝国(GDAL编译安 ... -
Android开发之Android体系架构介绍
2012-01-19 01:31 1566Android开发之Android体系 ... -
EGLIBC库介绍
2012-01-19 01:31 603EGLIBC库介绍 2011年05月05 ... -
给Win32 GUI程序调试信息输出方法
2012-01-19 01:31 1357给Win32 GUI程序调试信息输出方法 2011年09月2 ... -
SAMSUNG S3C2440的简易BootLoader ㈢
2012-01-19 01:31 608SAMSUNG S3C2440的简易BootLoa ... -
v4l2驱动编写篇(2)
2012-01-17 00:48 1188v4l2驱动编写篇(2) 2011年04月01日 应用可 ... -
file_operation结构体详解
2012-01-17 00:48 1012file_operation结构体详解 2011年06月22 ... -
电脑蓝屏自动关机故障的检修方法
2012-01-17 00:48 657电脑蓝屏自动关机故障的检修方法 2011年09月23日 ... -
Video4Linux
2012-01-17 00:48 777Video4Linux 2011年12月05日 Vide ... -
HK-2000数据采集仪WEB服务器BOA的移植方法
2012-01-15 19:37 686HK-2000数据采集仪WEB服务器BOA的移植方法 200 ... -
如何为linux嵌入式开发建立交叉编译环境(2.4内核)
2012-01-15 19:36 699如何为linux嵌入式开发建立交叉编译环境(2.4内核) 2 ... -
【转】如何为嵌入式开发建立交叉编译环境
2012-01-15 19:36 754【转】如何为嵌入式开发建立交叉编译环境 2009年10月26 ... -
EGLIBC库介绍
2012-01-15 19:36 550EGLIBC库介绍 2011年05月05 ... -
c库函数qsort使用方法实例
2012-01-15 19:36 549c库函数qsort使用方法实例 2010年01月03日 ...
相关推荐
在 ASP.NET 中,有多种保存信息的对象,例如 Application、Session、Cookie、ViewState 和 Cache 等,每一种对象都有其特点和应用场景。下面我们将详细介绍每一种对象的特点和应用场景。 Application 对象 ...
### Application、Session、Cookie、ViewState、Cache、Hidden 的区别与应用 #### Application - **信息量大小**:可存储任意大小的数据,适用于全局共享信息,如网站计数器、配置参数等。 - **作用域和保存时间**...
查询字符串是URL的一部分,用于在页面间传递参数。这种方式简单但不安全,因为信息对所有人可见。例如: ```csharp // 发送重定向请求 Response.Redirect("User.aspx?UserNameID=10000&LevelD=100"); // 读取信息 ...
本文将深入探讨几种常见的状态管理方式,包括Cookie、Session、Application、Cache以及隐藏域/ViewState/ControlState、ControlState和Profile,对比它们的特性和适用场景。 1. **状态管理与数据库** 状态管理的...
1. QueryString:最简单的方式是通过URL的查询字符串来传递参数。在超链接或者服务器端的Response.Redirect方法中,可以添加参数到URL后面。例如,`Response.Redirect("Page2.aspx?name=value")`。在目标页面中,...
**B/S系统中变量传递的替代方案**:如果不能使用Session、Cookie、Application,可以考虑使用ViewState(在页面生命周期内保存状态)、TempData(跨请求但只读一次)、隐藏字段(对于少量数据有效)或查询字符串...
2. ASP.NET页面间传递值的方法:包括URL查询字符串(QueryString)、Session、Server.Transfer、Viewstate、隐藏字段等。其中,Query String和Session是最常见的,而Server.Transfer可以在服务器内部转移请求,不...
- `QueryString`:通过URL查询字符串传递参数,如 `Response.Redirect("page.aspx?id=1")`。 - `Session`:在会话范围内存储值,`Session["key"] = "value"`。 - `Server.Transfer`:在服务器端转移请求,保留...
- 隐藏域也是在HTML页面中,但不是ViewState的一部分,是单独的隐藏字段。 6. ADO.NET中的数据库连接类如`SqlConnection`等,它们都继承自`System.Data.Common.DbConnection`类。 7. `DataSet`中的`DataTable`间...
- 查询字符串(Query String)。 - 请求对象(Request)。 - 视图状态(ViewState)。 - 控件属性(Control Property)。 - HTML隐藏字段(Hidden Field)。 - 利用表单数据(Form Data)。 7. 遍历控件并...
- `QueryString`:通过URL查询字符串传递,适用于少量、非敏感数据。 - `Session`:存储在服务器端,会话级别的数据存储,适合存储用户状态信息。 - `Server.Transfer`:服务器端转移,页面之间不刷新,但客户端...
7. **传递变量**:若不使用Session、Cookie、Application,可以通过查询字符串、隐藏字段、ViewState、服务器变量或自定义HttpModule等方式传递。 8. **分层架构**:常见的三层架构包括表现层、业务逻辑层和数据...
在Windows Forms中,可以通过递归遍历控件集合,找到TextBox控件并设置其Text属性为空字符串。 8. 冒泡排序算法: 冒泡排序是一种简单的排序算法,通过不断交换相邻的逆序元素来逐步排序。代码中使用两层循环实现...
85 <br>0130 复制字符串中指定的字符 85 <br>0131 巧截字符串的数字 86 <br>0132 如何存储变长字符串 86 <br>0133 在进行字符串比较时忽略大小写 87 <br>0134 如何去除字符串尾空格 87 ...
1. **页面间传递参数**:主要有URL传递、Query String、Session、View State、Cookie、隐藏字段、Application和Cache等方法。每种方法都有其适用场景和优缺点,例如URL传递简洁但不适合大量数据,Session存储方便但...