0

0

.net缓存——基于文件的缓存

黄舟

黄舟

发布时间:2017-02-24 10:46:46

|

2582人浏览过

|

来源于php中文网

原创

一,.Net中的缓存基础知识

.net中支持的两种依赖:

CacheDependency

SqlDependency

表示对于文件或者目录的依赖

表示对于SQL数据库的依赖

过期时间

绝对过期时间

滑动过期时间

一个特定的时间点,类型为DateTime

 

一个时间间隔,类型为TimeSpan

优先级  :   CacheItemPriority

         由于我们需要缓存大量的数据,在内存有限的情况下,就必须对缓存的数据进行优先级分类,以便在需要的时候,将不重要的数据从缓存中移除。优先级用来指定缓存数据的重要性,重要的数据可以更长时间地保存在内存中。

 删除通知

        当被缓存的数据从内存中移除的时候,可以提供一个通知机制,来回调用户定义的方法,方法必须符合CacheItemRemovedCallback委托的定义。。

 特别注意:

        1,回调的时机是不可预知的,不能假定回调发生时,回调方法的执行线程存在HttpContext的上下文,为了在没有请求上下文的时候取得对Cache对象的引用,可以通过HttpRuntime的cache属性来使用应用程序的cache.

        2,不能在页面上使用实例方法来作为回调方法,挡在页面上使用回调方法时,由于指向回调方法的引用会阻止垃圾回收机制,因此会造成内存很快耗光。

        3,一般通过在自定义类的静态方法实现回调方法,或者使用页面对象的静态方法实现。

二,基于文件的缓存示例

简灰服装商城整站 For SHOPEX
简灰服装商城整站 For SHOPEX

SHOPEX简灰服装商城整站源码下载。 安装方法:1.解压上传程序至网站根目录.. 访问:域名/bak.(用户名:admin 密码:123456)2.进入帝国备份王后,配置数据库数据库信息.选择-www.taomoban.net目录.还原数据库.3.修改FTP目录下的config/config.phpphp 数据库连接信息.4.登陆网站后台--清空缓存..5.删除bak文件夹 后台:shopadm

下载

首先在测试页面上加个label:

  

接着,加入缓存管理类:

namespace 基于文件的缓存依赖
{
    public class CacheManager
    {
        public static string Message {

            get {
                HttpContext context = HttpContext.Current;

                //首先从缓存中获取
                string message = context.Cache["Message"] as string;

                //如果缓存中没有数据
                if (message==null)
                {
                    string path = context.Server.MapPath("TestFileCache.txt");
                    message = System.IO.File.ReadAllText(path);

                    //将信息保存到缓存中,设置响应的过期时间为1分钟
                    context.Cache.Add(
                        "Message",
                        message,
                        new System.Web.Caching.CacheDependency(path),//依赖于文件或者目录的依赖
                        System.Web.Caching.Cache.NoAbsoluteExpiration,//不使用绝对过期时间
                        new TimeSpan(0, 0, 5),//缓存的时间
                        System.Web.Caching.CacheItemPriority.Normal, //缓存的优先级
                        Callback); //过期时的回调
                    
                }

                return message;
            }
        
        }


        /// 
        /// Callbacks the specified key.
        /// 
        /// The key.
        /// The value.
        /// The reason.
        /// Editor:v-liuhch CreateTime:2015/5/26 20:13:22
        private static void Callback(
            
            string key,
            Object value,
            System.Web.Caching.CacheItemRemovedReason reason
            //原因
            ) {

                if (reason == System.Web.Caching.CacheItemRemovedReason.Expired)
                {
                   HttpRuntime.Cache.Insert("Message","时间已到,缓存已过期");
                    
                }
                }
           
        
        }

}

这里,区别下cache的Add方法和Insert方法:

      在调用Add的时候,如果要加入的缓存项存在的话,则会调用失败;但是如果用insert插入,则新插入的value值会覆盖掉原来的value值。

     在webform1中,加入一行测试下:

 protected void Page_Load(object sender, EventArgs e)
        {
                this.label1.Text = CacheManager.Message;   //获取缓存

        }

        可以看到已经读到文件中的内容了,因为设置的是5s后过期,所以5s后我们刷新下:

但是多次测试我们会发现,刷新后出现过期的准确时间并不是5s,同时验证了回调的时机是不可预知的

 以上就是.net缓存——基于文件的缓存的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

72

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 8.1万人学习

python编程入门系列图文教程
python编程入门系列图文教程

共65课时 | 24.7万人学习

vscode其实很简单
vscode其实很简单

共72课时 | 29.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号