`
uro494zq
  • 浏览: 16375 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    ASP.NET保存信息总结(Application,Session,Cookie,ViewState和Cache等)

    在 ASP.NET 中,有多种保存信息的对象,例如 Application、Session、Cookie、ViewState 和 Cache 等,每一种对象都有其特点和应用场景。下面我们将详细介绍每一种对象的特点和应用场景。 Application 对象 ...

    Application、Session、Cookie、ViewState、Cache、Hidden的区别

    ### Application、Session、Cookie、ViewState、Cache、Hidden 的区别与应用 #### Application - **信息量大小**:可存储任意大小的数据,适用于全局共享信息,如网站计数器、配置参数等。 - **作用域和保存时间**...

    Application session cookies用法

    查询字符串是URL的一部分,用于在页面间传递参数。这种方式简单但不安全,因为信息对所有人可见。例如: ```csharp // 发送重定向请求 Response.Redirect("User.aspx?UserNameID=10000&LevelD=100"); // 读取信息 ...

    cookie、session及一些缓存的对比

    本文将深入探讨几种常见的状态管理方式,包括Cookie、Session、Application、Cache以及隐藏域/ViewState/ControlState、ControlState和Profile,对比它们的特性和适用场景。 1. **状态管理与数据库** 状态管理的...

    ASP.NET页面之间传递值的几种方式(txt文件)

    1. QueryString:最简单的方式是通过URL的查询字符串来传递参数。在超链接或者服务器端的Response.Redirect方法中,可以添加参数到URL后面。例如,`Response.Redirect("Page2.aspx?name=value")`。在目标页面中,...

    asp.net面试题 (与网上搜索的不一样)(最近刚更新2009/7/29)

    **B/S系统中变量传递的替代方案**:如果不能使用Session、Cookie、Application,可以考虑使用ViewState(在页面生命周期内保存状态)、TempData(跨请求但只读一次)、隐藏字段(对于少量数据有效)或查询字符串...

    C#经典面试题.docx

    2. ASP.NET页面间传递值的方法:包括URL查询字符串(QueryString)、Session、Server.Transfer、Viewstate、隐藏字段等。其中,Query String和Session是最常见的,而Server.Transfer可以在服务器内部转移请求,不...

    一百二十八道 ASP.NET面试题集合 总有您需要的题目

    - `QueryString`:通过URL查询字符串传递参数,如 `Response.Redirect("page.aspx?id=1")`。 - `Session`:在会话范围内存储值,`Session["key"] = "value"`。 - `Server.Transfer`:在服务器端转移请求,保留...

    asp.net面试题

    - 隐藏域也是在HTML页面中,但不是ViewState的一部分,是单独的隐藏字段。 6. ADO.NET中的数据库连接类如`SqlConnection`等,它们都继承自`System.Data.Common.DbConnection`类。 7. `DataSet`中的`DataTable`间...

    net面试题.。。。。。

    - 查询字符串(Query String)。 - 请求对象(Request)。 - 视图状态(ViewState)。 - 控件属性(Control Property)。 - HTML隐藏字段(Hidden Field)。 - 利用表单数据(Form Data)。 7. 遍历控件并...

    (完整word版)ASP.NET面试题132道.doc

    - `QueryString`:通过URL查询字符串传递,适用于少量、非敏感数据。 - `Session`:存储在服务器端,会话级别的数据存储,适合存储用户状态信息。 - `Server.Transfer`:服务器端转移,页面之间不刷新,但客户端...

    .net面试题目集锦

    7. **传递变量**:若不使用Session、Cookie、Application,可以通过查询字符串、隐藏字段、ViewState、服务器变量或自定义HttpModule等方式传递。 8. **分层架构**:常见的三层架构包括表现层、业务逻辑层和数据...

    .NET面试试题

    在Windows Forms中,可以通过递归遍历控件集合,找到TextBox控件并设置其Text属性为空字符串。 8. 冒泡排序算法: 冒泡排序是一种简单的排序算法,通过不断交换相邻的逆序元素来逐步排序。代码中使用两层循环实现...

    C#编程经验技巧宝典

    85 <br>0130 复制字符串中指定的字符 85 <br>0131 巧截字符串的数字 86 <br>0132 如何存储变长字符串 86 <br>0133 在进行字符串比较时忽略大小写 87 <br>0134 如何去除字符串尾空格 87 ...

    _NET面试题大全_简答题

    1. **页面间传递参数**:主要有URL传递、Query String、Session、View State、Cookie、隐藏字段、Application和Cache等方法。每种方法都有其适用场景和优缺点,例如URL传递简洁但不适合大量数据,Session存储方便但...

Global site tag (gtag.js) - Google Analytics