MonoRail学习笔记八:页面缓存的使用

简介:
以前版本中MonoRail是不支持页面缓存的,在1.0 RC3版中加入了页面缓存的支持,有了页面缓存之后会对性能有很大的提升。
主要是通过加入了一个新的属性 CacheAttribute.cs,其实后台也是同样使用了System.Web下的缓存处理的机制
(以前Yok也写过一篇实现MonoRail页面缓存,他是通过编写自己的缓存类来实现的,效果也不错)

使用方法很简单,如下所示:
下面列出了主要的文件,要使用缓存只是在Controller下红色的一条语句
测试Html文件
Controller文件的Index方法:
        [Cache(HttpCacheability.Public, Duration = 360, VaryByParams = "id,name")]
        
public   void  Index( int  id,  string  name,  int  age, DateTime birthday)
        
{
            PropertyBag.Add(
"id", id);
            PropertyBag.Add(
"name", name);
            PropertyBag.Add(
"age", age);
            PropertyBag.Add(
"birthday", birthday);
        }

注意上面红色标示的代码
我这里只是列出了一种常用的方式,Duration表示缓存有效期是360秒,VaryByParams指定当id或者name的参数值改变了才重新生成此页面,否则不用调用此方法,直接使用缓存中的页面,HttpCacheability定义可以参照MSDN中的解释:
 NoCache:设置 Cache-Control: no-cache 标头。如果没有字段名,则指令应用于整个请求,且在满足请求前,共享(代理服务器)缓存必须对原始 Web 服务器强制执行成功的重新验证。如果有字段名,则指令仅应用于命名字段;响应的其余部分可能由共享缓存提供。   
 Private:默认值。设置 Cache-Control: private 以指定响应只能缓存在客户端,而不能由共享(代理服务器)缓存进行缓存。   
 Public:设置 Cache-Control: public 以指定响应能由客户端和共享(代理)缓存进行缓存。   
 Server:指定响应仅缓存在源服务器上。与 NoCache 选项相似。客户机接收 Cache-Control: no-cache 指令,但文档是在原始服务器上缓存的。   
 ServerAndNoCache:应用 Server 和 NoCache 的设置指示在服务器上缓存内容,而对服务器以外的其他对象都显式否定其缓存响应的能力。   
 ServerAndPrivate:指示响应只能在服务器和客户端缓存。代理服务器不能缓存响应。   

index.vm文件

测试结果(在Index方法上设置断点):
第一次调用:进入断点,正常显示测试结果
第二次调用:(页面输入值不变),不进入断点,正常显示测试结果
第三次调用:(页面中年龄输入值改变),不进入断点,显示结果中年龄值还是之前的值
第四次调用:(页面中姓名输入值改变),进入断点,正常显示测试结果
第五次调用:(6分钟之后)),进入断点,正常显示测试结果
通过以上测试证明:MonoRail中的页面缓存是可以正常使用的,可以有效提高性能

实现机制简单分析:
在每个action执行之后,判断是否有Cache属性,如果有,就调用如下方法:

配置Asp.Net缓存机制

好像也蛮简单的-_-,直接根据参数调用HttpCachePolicy类中的相应方法就可以了


    本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/10/24/935742.html,如需转载请自行联系原作者


相关文章
|
1月前
|
缓存 NoSQL 安全
【Redis】缓存穿透
【Redis】缓存穿透
30 0
|
1月前
|
缓存 监控 NoSQL
解析Redis缓存雪崩及应对策略
解析Redis缓存雪崩及应对策略
|
1月前
|
存储 缓存 NoSQL
Redis高效缓存:加速应用性能的利器
Redis高效缓存:加速应用性能的利器
|
1月前
|
存储 缓存 Java
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
|
7天前
|
缓存 NoSQL Java
使用Redis进行Java缓存策略设计
【4月更文挑战第16天】在高并发Java应用中,Redis作为缓存中间件提升性能。本文探讨如何使用Redis设计缓存策略。Redis是开源内存数据结构存储系统,支持多种数据结构。Java中常用Redis客户端有Jedis和Lettuce。缓存设计遵循一致性、失效、雪崩、穿透和预热原则。常见缓存模式包括Cache-Aside、Read-Through、Write-Through和Write-Behind。示例展示了使用Jedis实现Cache-Aside模式。优化策略包括分布式锁、缓存预热、随机过期时间、限流和降级,以应对缓存挑战。
|
14天前
|
存储 缓存 NoSQL
使用redis进行缓存加速
使用redis进行缓存加速
26 0
|
15天前
|
存储 缓存 NoSQL
Java手撸一个缓存类似Redis
`LocalExpiringCache`是Java实现的一个本地缓存类,使用ConcurrentHashMap存储键值对,并通过ScheduledExecutorService定时清理过期的缓存项。类中包含`put`、`get`、`remove`等方法操作缓存,并有`clearCache`方法来清除过期的缓存条目。初始化时,会注册一个定时任务,每500毫秒检查并清理一次过期缓存。单例模式确保了类的唯一实例。
13 0
|
1月前
|
缓存 NoSQL Java
spring cache整合redis实现springboot项目中的缓存功能
spring cache整合redis实现springboot项目中的缓存功能
45 1
|
1月前
|
存储 缓存 NoSQL
[Redis]——缓存击穿和缓存穿透及解决方案(图解+代码+解释)
[Redis]——缓存击穿和缓存穿透及解决方案(图解+代码+解释)
134 0
|
1月前
|
缓存 NoSQL 数据库
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
[Redis]——数据一致性,先操作数据库,还是先更新缓存?

热门文章

最新文章

相关实验场景

更多