[.net 面向对象程序设计进阶 ] (14) 缓存 (Cache) ( 一 ) 认识缓存技术
缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率。
本节将介绍如何利用缓存写出高效率的代码。
存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取。
比如CPU二级缓存、内存、windows文件读取缓存。
.NET的缓存从软件架构角度分为客户端缓存和服务器端缓存.
基于Sever端缓存:Session 、 Application、Cache
因此我们在使用缓存技术时,要充分考虑使用环境,合理利用缓存。
最常用的工厂反射模式中,我们就可以利用缓存来存储动态反射的对象,以备下次访问时,快速返回 .
4.客户端缓存 Cookies
4.1 Cookie 应用场景
Cookie可以保持登录信息到用户下次与 服务器 的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。
主流的浏览器都默认支持Cookie,由于Cookie会记录用户的一些信息,因此出现了很多广告窗,就是利用这一特性,能知道我们最近都浏览和关注了什么,从而定向显示广告。
Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。
因此Cookie的生命周期,只要不清除,就一直存在于缓存文件中。
Cookie在Web的应用非常广泛。下面列举我们常用的Jquery库中对Cookie的操作
先说一下Jquery库,目前可以说是Javascript的标准库了,操作简单,轻量级,非常受欢迎。由于本系列主要讨论的是.NET面向对象程序设计,我们下面,简单的列举出基于Jquery库的一个Cookie操作组件:jquery.cookie.js
使用方法
A. 新添加一个会话 cookie :
$.cookie('the_cookie', 'the_value');
注:当没有指明 cookie 有效时间时,所创建的 cookie 有效期默认到用户关闭浏览器为止,所以被称为
“ 会话 cookie ( session cookie ) ” 。
B. 创建一个 cookie 并设置有效时间为 7 天 :
$.cookie('the_cookie', 'the_value', { expires: 7 });
注:当指明了 cookie 有效时间时,所创建的 cookie 被称为 “ 持久 cookie ( persistent cookie ) ” 。
C. 创建一个 cookie 并设置 cookie 的有效路径:
$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
注:在默认情况下,只有设置 cookie 的网页才能读取该 cookie 。如果想让一个页面读取另一个页面设
置的 cookie ,必须设置 cookie 的路径。 cookie 的路径用于设置能够读取 cookie 的顶级目录。将这
个路径设置为网站的根目录,可以让所有网页都能互相读取 cookie (一般不要这样设置,防止出现冲突) 。
D. 读取 cookie :
$.cookie('the_cookie'); // cookie 存在 => 'the_value'
$.cookie('not_existing'); // cookie 不存在 => null
E. 删除 cookie ,通过传递 null 作为 cookie 的值即可:
$.cookie('the_cookie', null);
5. Session 和 Application
5.1 Session 在 .NET 5 中应用
如下:
<div style="position:fixed;top:200px;left:200px;width:200px;height:200px;text-align:center; line-height:100px;"> @{ ViewBag.Title = "Home Page"; Session["user"] = "yubinfeng"; string user = Session["user"] is Nullable ? "" : Session["user"].ToString(); } Session 读取: @Html.Raw(user) <br> </div>
上面代码中括号中,使用的是 MVC 中的一些页面语法,后面会涉及到,这里主要说明 Session 的赋值及取值。
运行 MVC 项目结果如下:
Seeion 生命周期是会话级,一个会话结束 Session 失效, 打开一个浏览器请求一个网站的页面后, Session 开始,当 session 超过时间限制(一般是 20 分种)后, session 注销而失效 或是人为使用 session.invalidate(); 使用 session 失效。
另一个 Application 在 WebForm 中主要针对服务器级的存储。比如公共在线人数等存储可以用到,在 MVC 框架中会有更好的实现服务器级存储的方法,后面在 MVC 的时候具体介绍。
本节主要介绍了缓存的基础知识及几种缓存的简单应用,下一节重点说明服务器端的缓存 Cache ,这也是我们 .NET 程序设计的重点。
==============================================================================================
<如果对你有帮助,记得点一下 推荐 哦,如有 有不明白或错误 之处 ,请多交流>
<对本系列文章阅读有困难的朋友,请先看 《.net 面向对象编程基础》 >
<转载声明:技术需要共享精神,欢迎转载本博客中的文章,但请注明版权及URL>
.NET 技术交流群:467189533
==============================================================================================