写在前面

针对一些经常访问而很少改变的数据,使用缓存,可以提高性能。缓存是一种用空间换取时间的技术,说的直白点就是,第一次访问从数据库中读取数据,然后将这些数据存在一个地方,比如内存,硬盘中,再次访问的时候,不必再从数据库中读取,而是从内存或者硬盘中读取数据,可以提高访问速度。

缓存

缓存是一种利用空间换取时间的技术,通俗点也就是将得到的数据放在内存中或者硬盘中,在这段时间内服务器不去读取数据库,或真实的数据源,而是读取你存在内存中的数据。

作用:缓存可以有效的缓解数据库的压力。

一个例子

还是先看一个简单的例子,然后对缓存有一个直观的了解。

 public partial class CacheIndex : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DateTime dt = DateTime.Now;
//如果缓存中没有currentTime的值,则设置,否则输出缓存中的值
if (Cache["currentTime"] == null)
{
//将当前时间存入缓存
Cache["currentTime"] = dt;
//输出值
Response.Write("第一次读取的时间:"+dt.ToString("yyyy-MM-dd HH:mm:ss"));
}
else
{
//否则输出缓存中的值
dt = (DateTime)Cache["currentTime"];
//输出值
Response.Write("从缓存中读取的时间:"+dt.ToString("yyyy-MM-dd HH:mm:ss"));
} }
}
}

第一次访问页面时,会读取当前时间,然后将其写入缓存,刷新页面你会发现,之后读取的值,来自缓存中的数据。如果要清空缓存,可以将其设置为null。

这种设置缓存的方式,是最直观也是最简单的方式。

那么我们是否可以为其设置过期时间呢?当然是可以的,下面看这样一个例子:

  public partial class CacheIndex : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DateTime dt = DateTime.Now;
//如果缓存中没有currentTime的值,则设置,否则输出缓存中的值
if (Cache["currentTime"] == null)
{
//将当前时间存入缓存
/*
@第一个参数:缓存键
@第二个参数:缓存的值
@第三个参数:缓存依赖项,可以为null,不为其设置依赖项。
@第四个参数:缓存时间,为30秒
@第五个参数:缓存过期时间类型,这里是绝对过期时间,每刷新一次页面之后30秒缓存过期。
*/
Cache.Insert("currentTime", dt, null, DateTime.Now.AddSeconds(), System.Web.Caching.Cache.NoSlidingExpiration);
//输出值
Response.Write("第一次读取的时间:" + dt.ToString("yyyy-MM-dd HH:mm:ss"));
}
else
{
//否则输出缓存中的值
dt = (DateTime)Cache["currentTime"];
//输出值
Response.Write("从缓存中读取的时间:" + dt.ToString("yyyy-MM-dd HH:mm:ss"));
} }
}
}

无法同时设置 absoluteExpiration 和 slidingExpiration 参数。如果要让缓存项在特定时间到期,可将 absoluteExpiration 参数设置为特定时间,并将 slidingExpiration(滑动过期时间) 参数设置为 NoSlidingExpiration。

如果要让缓存项在最后一次访问该项后的某段时间之后到期,可将 slidingExpiration 参数设置为到期间隔,并将 absoluteExpiration(绝对过期时间) 参数设置为 NoAbsoluteExpiration。

总结

这里简单介绍了缓存的概念,以及举了一个缓存的例子。这里面需要对缓存中的两种过期时间好好体会,绝对过期时间和滑动过期时间。

[Asp.net]缓存简介的更多相关文章

  1. [Asp.net]缓存之页面缓存,控件缓存,缓存依赖

    写在前面 上篇文章介绍了缓存的基本概念及用途,另外也举了一个简单的例子,数据缓存(将一些耗费时间的数据加入到一个对象缓存集合中,以键值的方式存储.可以通过使用Cache.Insert()方法来设置缓存 ...

  2. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介

    ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一 ...

  3. asp.net—缓存

    1.页面缓存 要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可. <%@ OutputCache CacheProfile=" " NoStore= ...

  4. [转]C#基础回顾:Asp.net 缓存

    本文转自http://www.cnblogs.com/stg609/archive/2009/03/22/1418992.html 缓存的作用      你买电脑的时候,是否会在意CPU的二级缓存?是 ...

  5. Asp.Net缓存(2)

    缓存页的多个版本 ASP.NET 允许在输出缓存中缓存同一页的多个版本.输出缓存可能会因下列因素而异: 初始请求 (HTTP GET) 中的查询字符串. 回发时传递的控制值(HTTP POST 值). ...

  6. Asp.Net缓存(1)

    知其根本,方能应用.MSDN上的缓存讲解.先看原来讲解. Asp.Net缓存概述 通常,应用程序可以将那些频繁访问的数据,以及那些需要大量处理时间来创建的数据存储在内存中,从而提高性能. 在这些情况下 ...

  7. ASP.NET缓存策略经验谈

    要提升ASP.NET应用程序的性能,最简单.最有效的方式就是使用内建的缓存引擎.虽然也能构建自己的缓存,但由于缓存引擎已提供了如此多的功能,所以完全不必如此麻烦.在很大程度上,ASP.NET开发者在W ...

  8. (转)ASP.NET缓存全解析6:数据库缓存依赖

    ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...

  9. ASP.NET缓存 Cache

    缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多 ...

随机推荐

  1. python新建txt文件,并逐行写入数据

    #coding=utf-8 txtName = "codingWord.txt"f=file(txtName, "a+")for i in range(1,10 ...

  2. logstash 学习小记

    logstash 学习小记 标签(空格分隔): 日志收集 Introduce Logstash is a tool for managing events and logs. You can use ...

  3. 记一次数据库参数compatible降级[转]

    转:http://dbzone.iteye.com/blog/1042455 众所周知,Oracle参数compatible 主要用于启用Oracle针对某一版本的新特性.但此参数设置时,只能往上调, ...

  4. arcgis server缓存路径修改

    由于空间不够用,需要更换瓦片的输出路径,具体的修改方法如下: 1.打开ArcCatalog,打开GIS服务器,找到已经添加的gis服务器,一般都是机器名,如下所示,右键我的gis服务器(admin-t ...

  5. Docker 使用Docker知识简易部署一个LNMP平台

    1.自定义网络 docker network create lnmp 2.创建Mysql数据库容器(这里我们首先得创建一个mysql-vol数据卷) docker volume create mysq ...

  6. GC调优在Spark应用中的实践[转]

    作者:仲浩   出处:<程序员>电子刊5月B   摘要:Spark立足内存计算,常常需要在内存中存放大量数据,因此也更依赖JVM的垃圾回收机制.与此同时,它也兼容批处理和流式处理,对于程序 ...

  7. 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态

    实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...

  8. C#获取起始位置以及添加全局资源字典

    获取起始位置 Path.Combine(AppDomain.CurrentDomain.BaseDirectory); 添加全局资源 string temp = "this is a str ...

  9. Git 藏匿操作

    假设您正在为您的产品实施的一项新功能.你的代码是在推进开发进度而客户不断升级需求突然来了.正因为如此,你必须保持放下你的新功能,工作几个小时.你不能提交你的部分代码,也不能扔掉你的变化.所以,你需要一 ...

  10. IllegalArgumentException:@Body parameters cannot be used with form or multi-part encoding

    使用retrofit时报错IllegalArgumentException:@Body parameters cannot be used with form or multi-part encodi ...