关于session,cookie,Cache

昨天看了《ASP.NET 页面之间传值的几种方式》之后,对session,cookie,Cache有了更近一步的了解,以下是相关的内容

一、Session


1、Session基本操作

a、创建Session

//创建Session
        public void createSession(string[] arrStr)
        {
            //创建数组
            string[] str=new string[arrStr.Length];
            for (int i = 0; i < arrStr.Length; i++)
            {
                str[i] = i.ToString();
                Session[str[i]] = arrStr[i];
            }
        }

b、获取Session的值

string  getSessionValue=Session["name"].ToString();

c、遍历Session

//遍历Session
        public void getSession()
        {
            IEnumerator sessionEnum = Session.Keys.GetEnumerator();
            while (sessionEnum.MoveNext())
            {
                Response.Write(Session[sessionEnum.Current.ToString()].ToString()+";");
            }
        }

d、清空Session,但不结束会话

//清空Session,但不结束会话
        public void clearSession()
        {
            Session.Clear();
        }

e、结束Session会话

//结束Session会话
        public void abandonSession()
        {
            Session.Abandon();
        }

2、Session数据存放形式和位置

<system.web>
  <sessionState mode="Off|InProc|StateServer|SQLServer"  cookieless="true|false"  timeout="number of minutes"
  stateConnectionString="tcpip=server:port"  sqlConnectionString="sql connection string"  stateNetworkTimeout="number of seconds"/>
</system.web>

注解:

mode:表示设置存储Session形式和位置;

a、Off:禁用Session;

b、Inproc:In Process缩写,表示将Session存储在IIS进程内,但注意,该种方式虽然性能高,但IIS重启是,丢失Session信息;(默认值)

c、SateServer:将Session存储在ASP.NET状态服务进程中(重新启动Web运用程序时保留会话状态,并使会话状态可以用于网络中的多个Web服务器);

d、将Session存储在SQL Server中

cookieless:设置客户端存储Session形式和位置

a、true:使用cookieless模式,这时客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储;

b、false:使用kookie模式,默认值。

timeout 设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟;

stateConnectionString 设置将Session信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。(默认端口42424);

sqlConnectionString 设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=joye"。当mode的值是SQLServer时,这个属性是必需的;

stateNetworkTimeout 设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟;

3、Session原理

为什么引入Session?大家知道,因为http是一种无状态协议,因此,Session正弥补了这一缺陷。当然,Session作用远远不止于这些,这里就不多论述。

Session在ASP.NET中,表示客户端(Goggle,Firefox,IE等)与服务器端的会话,用来存储特定会话信息,准确来说,是用来存储特定用户信息。当客户端向服务器发送一个请求时,如登陆用户ID,服务器接收到该请求,服务器端Session产生一个与该登陆用户相关的SessionID,并将SessioID返回给客户端(Goggle,Firefox,IE等),在新会话开始时,服务器将SessionID当做cookie存储在用户的浏览器中。

总结:

1、定义:System.Web.SessionState.HttpSessionState  Page.Session //获取ASP.NET提供的当前Session对象。

2、特性:

a、Session中文意思为“会话”,在ASP.NET中,表示客户端和服务器之间的会话,web中常用会话之一。

b、Session存储在服务器端内存中。

c、Session可以存储任何类型的数据,包括自定义对象。

d、Session与Session间是相互独立的,互不干扰。

e、Session与Cookie配对使用,Session在服务器端产生SessionID,并将该SessionID返回给客户端(IE,FireFox,Google等),客户端Cookie来存储该SessionID,

整过会话过程中,只要保存SessionID的Cookie不丢失,则Session的信息就不会丢失。

f、Session保存的数据可以跨页访问,即跨页面是全局的。

g、Session不能跨进程访问,只能由该会话用户访问。

h、可以在不结束会话的条件下,清除Session信息,即调用Session.Clear();

i、当会话结束,过期,服务器就会清除Session对象。

j、Session常用于保存登录用户的ID.

二、Cache



核心代码:

//Class1

 Cache["id"] = TextBox1.Text;
 Response.Redirect("~/WebForm1.aspx");

//Class2

if (Cache["id"]!=null)
  {
     Label1.Text = Cache["id"].ToString();
  }

//移除缓存
Cache.Remove("id");

//如果 Cache["id"]为空,则传值失败。可使用如下方法实
//限期为10分钟
 Cache.Insert("id",TextBox1.Text,null,Cache.NoAbsoluteExpiration,new TimeSpan(0,10,0));

总结:

1、应用程序中的缓存机制用于将需要大量服务器资源来创建的对象存储在内存中,以此大大改进应用程序的性能。这个机制同样可以用来传值。

2、与其他方法不同的是,该方法需要设置缓存项优先级和缓存时间。因为当系统内存缺乏时,缓存机制会自动移除很少使用或优先级较低的项,从而造成传值失败。

3、该方法的优点是传递数据的大小和数量无限制,速度快。缺点是缓存机制的操作相对比较复杂。

三、Cookie



核心代码:

//Class1

HttpCookie httpCookie = new HttpCookie("testCookie","Page transfers by Cookie");
Response.Redirect("~/Class2.aspx");
//Class2

Label1.Text = Request.Cookies["testCookie"].Value;

总结:

1、Cookie用于在用户浏览器上存储小块的信息,保存用户的相关信息,比如用户访问某网站时用户的ID,用户的偏好等,用户下次访问就可以通过检索

获得以前的信息。所以Cookie也可以在页面间传递值。

2、Cookie通过HTTP头在浏览器和服务器之间来回传递的。Cookie只能包含字符串的值,如果想在Cookie存储整数值,那么需要先转换为字符串的形式。

3、与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使

用要配合ASP.NET内置对象Request来使用。

4、使用简单,是保持用户状态的一种非常常用的方法。比如在购物网站中用户跨多个页面表单时可以用它来保持用户状态。

5、常常被人认为用来收集用户隐私而遭到批评。

6、安全性不高,容易伪造。

时间: 2024-10-01 04:51:38

关于session,cookie,Cache的相关文章

关于缓存中Cookie,Session,Cache的使用

文章来源:http://canann.iteye.com/blog/1941173 以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application. 其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息. Session则保存对话信息.Application则是保存在整个应用程序范围内的信息,相当于全局变量. Session Session用来保存每一个用户的专有信息 Session的生存期是用户持续请求时间加上一段时间(一般是20分

Application,Session,Cookie,ViewState和Cache区别

在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保存时间 应用范围 保存位置 Application 任意大小 整个应用程序的生命期 整个应用程序/所有用户 服务器端 Cache 任意大小 可以根据需要设定 整个应用程序/所有用户 服务器端 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cook

[区别]APPlication,Session,Cookie,ViewState和Cache

原文发布时间为:2009-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?     为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示: 方法 信息量大小 保存时间 应用范围 保存位置 Application 任意大小 整个应用程序的生命期 所有用户 服务器端 Session 小量,简

Redis+Django(Session,Cookie、Cache)的用户系统

转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一个便利的user api接口,无论在py中 request.user,参见 Request and response objects .还是模板中的 {{user}} 都能随时随地使用,如果从web开发角度来看,其实无非就是cookie与session的运用. 在项目首页,在登陆和注销状态下分别输出

简单谈谈Cookie,Session与Cache之间的区别

一 摘要 Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间.而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据.这一过程,是不用开发人员干预的.所以一旦客户端禁用Cookie,那么Session也会失效. 服务器也可以通过URL重写的方式来传递Sessi

Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别

系统对象与状态管理  原文   http://www.cnblogs.com/liaoqiang/archive/2010/01/30/1660021.html Page对象Page对象是指向页面自身的方式,在整个页面的执行期内,都可以使用该对象示例: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="defautl.aspx.cs" Inherits="_defaul

Warning: session_start() [function.session-start]: Cannot send session cookie解决办法

在很多时间使用了session就会出来如下提示了, Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/u114264/include/db_mysql教程.class.php教程:1) in /home/u114264/login1.php on line 3 Warning: sessio

session和cache的区别

以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application. 其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息. Session则保存对话信息.Application则是保存在整个应用程序范围内的信息,相当于全局变量. 1.Session Session用来保存每一个用户的专有信息 Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右) Session信息是保存在Web服务器内存中的,保存数据量可大可小由于

ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)

在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保存时间 应用范围 保存位置 Application 任意大小 整个应用程序的生命期 整个应用程序/所有用户 服务器端 Cache 任意大小 可以根据需要设定 整个应用程序/所有用户 服务器端 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cook