zoukankan      html  css  js  c++  java
  • 关于颗粒度更细小的缓存-“部分视图缓存”

    引言

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

    情景

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

  • 相关阅读:
    【机器学习】算法原理详细推导与实现(一):线性回归
    《0~3岁孩子的 正面管教》——备忘
    马歇尔·卢森堡《非暴力沟通》——备忘
    李笑来《财富自由之路》——备忘
    select、poll、epoll之间的区别总结[整理]
    堆和栈区别
    Linux 文件系统剖析
    Inside The C++ Object Model(五)
    Inside The C++ Object Model(四)
    Inside The C++ Object Model(三)
  • 原文地址:https://www.cnblogs.com/moshanghuakai/p/7160518.html
Copyright © 2011-2022 走看看