把老赵的页面缓存片断改一下,呵呵

简介:

老赵同志写的页面缓存片断不错,用着方便,但我感觉在前端调用上有些不便,可以我把他的代码又改了一下,呵呵!

老赵代码的调用:

Before Rendering:
<%= DateTime.Now %>

<br />

Rendering:
<%= Html.Cache("Now", null, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration,
    () => { System.Threading.Thread.Sleep(5000); return DateTime.Now; }) %>

<br />

After Rendering:
<%= DateTime.Now %>

占占页面片断缓存的调用:

@Html.Cache("test", DateTime.Now.AddMinutes(1),
 @<span>
     @DateTime.Now
 </span>
    );

前台UI层使用了razor视图引擎,写法上很简介,它与C#方法容为一体,我的HTML代码以参数的形式传递给了Cache方法,再看一下Cache方法原型:

    /// <summary>
    /// 缓存的扩展方法
    /// </summary>
    public static class CacheExtensions
    {
        /// <summary>
        /// 对页面中指定字符串进行缓存
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="cacheKey">缓存Key</param>
        /// <param name="cacheDependencies">缓存依附对象,可以为null</param>
        /// <param name="absoluteExpiration">过期时间</param>
        /// <param name="slidingExpiration">相对本次过期时间</param>
        /// <param name="func">要缓存对象</param>
        /// <returns></returns>
        public static HelperResult Cache(this HtmlHelper htmlHelper, string cacheKey, CacheDependency cacheDependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, Func<object, HelperResult> func)
        {
            var cache = htmlHelper.ViewContext.HttpContext.Cache;
            var content = cache.Get(cacheKey) as string;

            if (content == null)
            {
                content = func.Invoke(null).ToHtmlString();
                cache.Insert(cacheKey, content, cacheDependencies, absoluteExpiration, slidingExpiration);
            }

            return new HelperResult(writer =>
            {
                writer.Write(content);
            });
        }

        /// <summary>
        /// 对页面中指定字符串进行缓存
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="cacheKey">缓存Key</param>
        /// <param name="absoluteExpiration">过期时间</param>
        /// <param name="slidingExpiration">相对本次的过期时间</param>
        /// <param name="func">要缓存对象</param>
        /// <returns></returns>
        public static HelperResult Cache(this HtmlHelper htmlHelper, string cacheKey, DateTime absoluteExpiration, TimeSpan slidingExpiration, Func<object, HelperResult> func)
        {
            return Cache(htmlHelper, cacheKey, null, absoluteExpiration, slidingExpiration, func);
        }

        /// <summary>
        /// 对页面中指定字符串进行缓存
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="cacheKey">缓存Key</param>
        /// <param name="absoluteExpiration">过期时间</param>
        /// <param name="func">要缓存对象</param>
        /// <returns></returns>
        public static HelperResult Cache(this HtmlHelper htmlHelper, string cacheKey, DateTime absoluteExpiration, Func<object, HelperResult> func)
        {
            return Cache(htmlHelper, cacheKey, null, absoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, func);
        }
    }

呵呵,赶快去部署一下吧,有时,我们在考虑代码的功能性的同时,也应该多注意一下代码的调用的方便性与代码表现出现的艺术性!

感谢您的阅读!

感谢老赵同志!

本文转自博客园张占岭(仓储大叔的博客,原文链接:把老赵的页面缓存片断改一下,呵呵,如需转载请自行联系原博主。

目录
相关文章
|
人工智能 计算机视觉
教程 |【阿里云.人脸识别】Access Key ID 和 Access Key Secret 查看方法
本章主要介绍阿里云.人脸识别 Access Key ID 和 Access Key Secret 查看方法。
|
SQL JSON 数据可视化
新的一年,带给你全新的DataV
2023已经到来,我们正在迎来春暖花开的新时节。在这新年到来之际,我们给广大的DataV用户带来了一份新年礼物 - 全新的DataV 7.0版本,下面小编就带大家看一看新版本中有哪些激动人心的升级。
新的一年,带给你全新的DataV
|
数据可视化 Python
神操作!用 Python 操作 xmind 绘制思维导图!
在平时的工作中当我们要总结一些知识的时候就需要一款工具来画画流程图,这里推荐 XMind 软件,用 Xmind 绘制的思维导图看起来思路清晰,那么今天的文章介绍关于思维导图的相关知识以及用 Python 如何操作 Xmind 绘制思维导图。
2450 0
神操作!用 Python 操作 xmind 绘制思维导图!
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品价格预测的深度学习模型
使用Python实现智能食品价格预测的深度学习模型
347 6
|
Kubernetes 安全 Cloud Native
Confidential Containers:云原生机密计算基础设施
后续将基于RunD安全容器打造更完整的机密容器技术,包含支持更多的 HW-TEE 平台,以及构建更完备的机密容器支持能力。
Confidential Containers:云原生机密计算基础设施
|
Web App开发 编译器 C语言
QT5.14.2使用webkit引擎完成网页浏览
QT5.14.2使用webkit引擎完成网页浏览
1403 0
QT5.14.2使用webkit引擎完成网页浏览
|
缓存 安全 搜索推荐
Cors跨域(三):Access-Control-Allow-Origin多域名?
Cors跨域(三):Access-Control-Allow-Origin多域名?
Cors跨域(三):Access-Control-Allow-Origin多域名?
|
SQL 关系型数据库 MySQL
关于MYSQL flush table的作用
关于MYSQL flush table的作用水平有限,还待学习。如有错误,请指正。 先给出官方文档: ? FLUSH TABLES Closes all open tables, forces all tables in use to be closed, and flushes the query cache.
5282 0
|
监控 供应链 BI
宜搭平台搭建应用的最佳实践(一)| 学习笔记
快速学习宜搭平台搭建应用的最佳实践。
宜搭平台搭建应用的最佳实践(一)| 学习笔记

热门文章

最新文章