关于颗粒度更细小的缓存-“部分视图缓存”

引言

  之前学习了一点关于缓存的东西,有控制器缓存、页面缓存,又看到一篇文章是关于部分视图缓存的内容。一下就是我的一些学习总结。

情景

  假设有一个页面A,这是一个静态页面除了头条的轮播图需要更新。那么这个时候可以把整个页面缓存,然后轮播图那一块用Html.Partial显示。

首先页面缓存设置为一个小时

然后页面显示输出时间

 

具体效果如上,在60分钟内刷新时间都是不会改动的。这个时候整个页面就是缓存60分钟。

部分视图缓存

将Index页面的缓存过滤器移除。新增一个Html的拓展项:

    public static class CacheExtensions
    {
        public static string Cache(this HtmlHelper htmlHelper,string cacheKey,CacheDependency cacheDependencies,DateTime absoluteExpiration,TimeSpan slidingExpiration,Func<object> func)
        {
            var cache = htmlHelper.ViewContext.HttpContext.Cache;
            var content = cache.Get(cacheKey) as string;

            if (content == null)
            {
                content = func().ToString();
                //SqlCacheDependency sqldependency = new SqlCacheDependency();
                //SqlCacheDependency.CreateOutputCacheDependency("UserCacheDependency:UnionInf")这个就是之前写在webconfig里面的配置数据
                var path = System.AppDomain.CurrentDomain.BaseDirectory;
                cache.Insert(cacheKey, content,new CacheDependency(path+"/Exam/Name.txt") , absoluteExpiration, slidingExpiration);
            }  
            return content;
        }
    }

现在是依赖与当前目录下的Name.txt文件,即如果文件被改动缓存就会失效。如果要用Sql依赖则可以使用上述备注的内容。

然后页面代码修改如下:

最终的效果如下:

 

原文链接:http://www.cnblogs.com/JeffreyZhao/archive/2009/09/17/aspnet-mvc-fragment-cache-1.html

 

转载于:https://www.cnblogs.com/moshanghuakai/p/7160518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值