Cookies
- 存在客户端的少量文本数据
- 存于浏览器进程中或者硬盘中
如果响应报文头中set-cookie:中有Exprise:就存在浏览器所在机器的硬盘中,反之则存于浏览器进程中。 - 服务器写cookie的代码
HttpCookie cookie=new HttpCookie(“uname”,”admin”);
cookie.Exprise=DateTime.Now.Add(3);//设置cookie的有效期
cookie.Path=”/Admin/”;//设置cookie的作用域
cookie.Domain=”www.baidu.com”:
Response.Cookies.Add(cookie);
Session:
- session是存在服务器中进程内存中(状态服务器,数据库中)。
- 以asp.net_SessionID 为键的cookie形式(set-cookie)通知浏览器存起来(一定是存在浏览器的进程内存中的)。
- 生命周期在当前浏览器的会话中才有效。
- asp.net处理机制获取session是在9,10个管道事件中,判断是否实现了接口System.Web.SessionState.IRquireSessionState接口,如果有实现则会将session池中的session对象赋值给当前上下文中的session属性。
Cache
- 缓存是存在于服务器的进程内存中的(也有可能是存在于第三方缓存服务器软件中(Memcached,Reids))
- 缓存分为:
- 前台页面缓存 (.aspx上要增加<% OutPutCache Duration=”60” varParmas=”id;name” %>)
(1)、整页缓存 varParmas=”none”
(2)、根据参数来缓存varParmas=”id;name”
(3)、根据控件id来缓存 varControlID=”dpid1”
(4)、将缓存策略的配置信息放入web.config中 providfile=”配置名称”
(5)、本质是什么?
答:
①服务器第一次会创建:Last-Modified ,Exprise 关系:Exprise=Last-Modified + 页面output指令集中的Duration 的秒数
②浏览器:将Last-Modified中的时间以If-Modified-Since指令发送给服务器
③浏览器判断当前请求的时间点如果小于Exprise 的时间,则直接从自己的缓存中获取结果(html+css+js) 解析成dom元素呈现给用户
④服务器在第6,7个管道事件,根据浏览器发送过来的If-Modified-Since 的时间和服务器接收到请求的时间点比较,如果差值 < Duration 设置的秒数,则从缓存中将数据响应回浏览器. - 数据缓存(在当前网站iis进程中开辟一块内存HttpRuntime.Cache.add(“key”,”admin”))
(1)、数据缓存的过期策略
a) 绝对过期时间
b) 相对过期时间
c) 文件依赖缓存
d) 数据库依赖缓存
(2)、缓存的访问有效期是什么?
比如说:
用户A在A电脑上通过浏览器访问网站创建的缓存
用户B在B电脑上通过浏览器能否访问到?能
(3)、服务器如何创建一个缓存(代码如何写)
HttpRuntime.Cache.add(“key”,”object”,依赖项,绝对过期时间,相对过期时间,当前缓存的级别,缓存失效的回调函数)
(4)、缓存的生命周期
1、如果没有设置任何过期策略则跟应用程序的生命周期(iis重启缓存在失效)
2、和第1点中的4种过期策略有关
- 前台页面缓存 (.aspx上要增加<% OutPutCache Duration=”60” varParmas=”id;name” %>)
Session和Cookie区别
- Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
- Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。