您的位置:首页 > 移动开发

WebForm总结Day03_状态管理cookie_session_application

2015-09-25 19:15 447 查看
状态管理

1. 问题1:

 退出登陆后,下次再打开登陆页面自动录入上次登陆的用户名

 (需要记录上一次登陆的用户名,记录到哪里?)

 

2. Cookie

 Cookie是一种能够让网站服务器(或JS端,使用JQuery.Cookie)

 把少量数据(4kb左右)储存到客户端的硬盘或内存,并且读取出来的一种技术。

 特点:

 1)cookie和域名相关

 2)cookie和浏览器相关,不同浏览器存储Cookie的位置是不同的

 3)cookie中存储的是少量文本信息(字符串),如果想存对象,可以把对象序列化成字符串

 4)cookie过期

  没有设置cookie的过期时间,就存在内存中,存储在浏览器的进程中)

  设置了过期时间,存储在硬盘上

 使用场景:

 1)记录上次登陆的用户名

 2)记录登陆状态(登陆状态保持7天)

 3)记录用户最近浏览的商品

 

3. 服务器设置Cookie:将内容添加到Cookie中 通过响应报文将set-cookie内容Response输出给浏览器,

 由浏览器在本地生成。cookie是http协议规定的内容,浏览器都要遵守的

 

 服务器读取Cookie:浏览器通过请求报文里的Cookie传递浏览器存储的Cookie信息,

 服务器获得客户端传来的Cookie,从cookie读取数据必须判断是否为null,因为cookie容易丢失

 

 cookie的Path属性:限制访问localhost/下某个文件夹下的ashx页面才带Cookie内容

 否则如果path=/的话 那么访问localhost下所有的内容(图片,js等)都会带上cookie

  

 互联网优化的案例:图片服务器和主站域名不一样,降低Cookie流量的传输。面试时聊网站调优

 

4. 问题2

 登陆后显示登陆的用户名(http请求的无状态)

 

 在一般处理程序中是不能使用session的,但是可以

 1)using标记接口System.Web.SessionState,指定目标HTTP处理程序需要对会话状态值具有读写访问权

 2)类实现只读接口IReadOnlySessionState,或读写接口IRequireSessionState

 

 

5. Session

 Session提供了一种把信息保存在服务器内存中的一种方式。它能存储任何数据类型包括自定义对象。

 特点:

 1)从一个页面跳转到另一个页面Session数据不会丢失,在整个会话过程中Session的数据都不会丢失

 2)Session中的数据只由该会话的用户访问 

 3)当会话过期(20min)或终止时,服务器就会清除 Session 对象

 

 场景:保存登陆状态,过20min时间自动退出

 

6. Session原理(Session是在服务器端存数据)

 当程序第一次为用户存储Session时候,为了标记不同的客户端,

 服务器会为每一个客户端生成一个唯一的标示SessionId,sessionId对应一个字典

 默认以cookie的形式(无超时时间)返回给客户端。

 当下次用户在请求的时候会携带SessionId,

 访问Session数据时会以SessionId去取该客户端存储在服务器Session字典中的数据

 

 Session有自动销毁机制(设置失效时间,默认就是滑动过期机制),

 如果一段时间内浏览器没有和服务器发生任何的交互,则Session会定时销毁,默认20分钟。

 所以使用session的时候一定要判断 context.session["code"]!=null

 

7. session的问题

 ASP.Net已经内置了Session机制。不要放太多的对象到Session

 (因为存储在服务器端framework的一个辅助进程里(进程内session),不稳定,数据多了容易丢失)

 

 Session机制并不是Http协议规定的,是ASP.net实现的,

 现在PHP、JSP等大部分服务端技术都实现了Session,原理都差不多。

 

8. cookie和session

 Cookie是存在客户端,Session是存在服务器端,

 目的是一样的:保存和当前客户端相关的数据(当前网站的任何一个页面都能取到Session、Cookie)

9. 问题3:统计当前在线人数

 Application对象(存在服务器上) 

 Application对象可以存储应用程序级的数据

 第一个用户访问站点时,应用程序启动,并创建一个Application对象。

 创建成功后,整个应用程序中都可以使用该对象。

 除非应用程序关闭,否则对象一直存储在内存中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: