博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
步步为营-79-缓存
阅读量:4313 次
发布时间:2019-06-06

本文共 3368 字,大约阅读时间需要 11 分钟。

缓存Cache,一种空间换取时间的技术,适用于经常访问,不常修改的数据.

1 写入缓存

1.1 方法一 Cache["message"]="ab";

1.2 方法二 Cache.insert("message","ab");

1.3 其他重载 Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);

参数:   key:用于引用该对象的缓存键。

           value: 要插入缓存中的对象。
           dependencies: 该项的文件依赖项或缓存键依赖项。 当任何依赖项更改时,该对象即无效,并从缓存中移除。 如果没有依赖项,则此参数包含 null。
           absoluteExpiration:所插入对象将到期并被从缓存中移除的时间。  如果使用绝对到期,则 slidingExpiration 参数必须为 System.Web.Caching.Cache.NoSlidingExpiration。
            slidingExpiration: 最后一次访问所插入对象时与该对象到期时之间的时间间隔。如果使用可调到期,则 absoluteExpiration 参数必须为 System.Web.Caching.Cache.NoAbsoluteExpiration。
            priority:该对象相对于缓存中存储的其他项的成本,由 System.Web.Caching.CacheItemPriority 枚举表示。 该值由缓存在退出对象时使用;具有较低成本的对象在具有较高成本的对象之前被从缓存移除。
            onRemoveCallback: 在从缓存中移除对象时将调用的委托(如果提供)。 当从缓存中删除应用程序的对象时,可使用它来通知应用程序。

1.4 缓存移除的4个原因

CacheItemRemovedReason:

       Removed = 1, System.Web.Caching.Cache.Remove(System.String) 方法调用从缓存中移除的。

       Expired = 2,从缓存移除该项的原因是它已过期。
       Underused = 3, 之所以从缓存中移除该项,是因为系统要通过移除该项来释放内存。
       DependencyChanged = 4, 从缓存移除该项的原因是与之关联的缓存依赖项已更改。
       
 2 例子  

2.1 Demo   

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.Caching;namespace CacheTest{    public partial class CacheDemo : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            //01 假设字符串abc是来自于数据库            string str = "abc,来至于数据库";            //02 将数据写入缓存中            if (Cache["message"] == null)            {                Cache.Insert("message", str, null, DateTime.Now.AddSeconds(5), Cache.NoSlidingExpiration, CacheItemPriority.Low, RemoveCache);                Response.Write("数据来自于数据库");            }            else {                Response.Write("数据来自于缓存");            }        }        //根据委托构造方法        private void RemoveCache(string key, object value, CacheItemRemovedReason reason)        {            if (reason ==CacheItemRemovedReason.Expired )            {                            }        }    }}
1

2.2 页面缓存

<%@ OutputCache Duration="5" VaryByParam="*" %>

 Duration表示缓存时间,以秒为单位,超过这个时间则缓存失效

VaryByParam=“id”,表示对于相同页面的不同的id参数进行单独缓存。如果有多个确定缓存的参数,则将参数名用分号隔开即可,比如VaryByParam=“id;number”.如果想让任何不同的查询字符串都创建不同的缓存,则设置VaryByParam="*"

这个缓存是在服务器缓存的,不是在客户端,因为客户端还不断向服务器提交的请求的,只不过服务器看到有缓存就没有再执行页面类。

2.3 文件缓存依赖(当页面被访问时,从文本文件中读取数据)

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.Caching;using System.IO;namespace CacheTest{    public partial class _03文件缓存依赖 : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            //01获取文件            string filePath = Request.MapPath("被访问的文本文件.txt");            if (Cache["fileContent"] == null)            {                                //读取文件                string fileContent = File.ReadAllText(filePath);                //文件缓存依赖---如果文件发生变化,就会清楚缓存                CacheDependency cdd = new CacheDependency(filePath);                Cache.Insert("fileContent", fileContent, cdd);                Response.Write("数据来自于文件");            }            else {                Response.Write("数据来自于缓存" + Cache["fileContent"].ToString());            }        }    }}
3

 

转载于:https://www.cnblogs.com/YK2012/p/7050579.html

你可能感兴趣的文章
JS调试debug
查看>>
JS 中的string.lastIndexOf()
查看>>
潜移默化学会WPF(技巧篇)--TextBox相关(一) - AYUI框架 - 博客园
查看>>
Quartz.Net进阶之七:QuartzNet其他的功能简述
查看>>
消息队列
查看>>
WPF进阶教程 - 使用Decorator自定义带三角形的边框
查看>>
SQLServer之FOREIGN KEY约束
查看>>
redis 系列2 知识点概述
查看>>
图像滤镜艺术---图像滤镜晕影调节算法研究
查看>>
Win8Metro(C#)数字图像处理--2.21二值图像腐蚀
查看>>
MVC5 + EF6 入门完整教程
查看>>
SQL Server如何在变长列上存储索引
查看>>
Replication的犄角旮旯(八)-- 订阅与发布异构的问题
查看>>
Sliverlight实例之 绘制扇形和环形图
查看>>
Visual Studio 2012使用水晶报表Crystal Report
查看>>
你不知道的 页面编码,浏览器选择编码,get,post各种乱码由来
查看>>
SQLSERVER PRINT语句的换行
查看>>
Windows 8.1 应用开发 – 触控操作
查看>>
PowerDesigner创建物理模型
查看>>
使用Git、Git GUI和TortoiseGit
查看>>