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

2018-06-22 06:13:37来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

引言

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

情景

  假设有一个页面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

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:打造属于自己的支持版本迭代的Asp.Net Web Api Route

下一篇:Health Check in eShop -- 解析微软微服务架构Demo(五)