Dappers 开发入门 (5) - 缓存

Dappers内部定义了3个重要的Info对象: MappingInfo, StatementInfo, QueryInfo

  • MappingInfo对应了一个Domain实体对象,描述了 类/表 , 属性/列名 映射关系。 自动的sql语句创建也是基于 MappingInfo. Select , MappingInfo.Update, MappingInfo.Delete, MappingInfo.Insert 。根据主键, 属性的Attribute描述,可以指定某些属性不映射到列, 可以指定某些属性仅可Insert不可Update等。
  • StatementInfo对应了类myBatis 的sql配置的每一个key-value。它将value解析为 Sql、DynamicCriterias。 执行语句时,只需动态遍历参数,即可确定当前有效的Criteria,从而构建完整sql语句。 internal class Criteria
        {
             public  bool? IsOr {  getset; }
             public  bool IsInClause {  getset; } 
             public  string[] Cons {  getset; }
             public  string ParamName {  getset; }
             public  string Criterion {  getset; }
        }
  •  QueryInfo是一个查询请求的封装:QueryInfo.MappingType, QueryInfo.Sql, QueryInfo.Parameters,QueryInfo.Wheres, QueryInfo.OrderBy. 同时还有分页信息: QueryInfo.StartRecord, QueryInfo.PageSize,QueryInfo.TotalCount , 以及返回结果集: QueryInfo.List
默认设置下,每当请求首次涉及MappingInfo、StatementInfo时, 才会创建该对象。并自动加入LRU缓存池。 任何30分钟没有再次访问、Info总量超过200条时, 都会移除最少访问的记录。

 

编辑页缓存:

    通常一个列表,都可以链接、弹出响应的明细编辑界面。通常,每次载入不同的行,明细界面载入不同的数据:

  • iframe重新载入图片、脚本、html资源,重新渲染生成界面
  • 执行初始脚本,初始化Datepicker, comboBox,comboTree 等的数据载入
  • 载入数据,并逐一设置控件值

 

  所以这里对window做了处理: 初次打开window之后, 这个iframe创建;窗口关闭,iframe的div隐藏即可。 再次打开窗口,检测url是否一致,一致则直接弹出该frame,并根据额外参数,除非frame载入数据:

WIN.open({title:gridview.title,
            url:gridview.editUrl,
            param:'Id='+id,
            id:EDITOR_ID,
            width:gridview.editWidth,
            height:gridview.editHeight,
            maximized:gridview.editMaximized,
            maximizable:gridview.editMaximizable,
            modal: true

        }); 

可见,页面载入不再是: test.aspx?Id=0001 的方式, 而是

    1.页面载入 test.aspx ,

    2.载入后立即执行 loadData('Id=0001') ,以ajax的方式载入数据。 

当Id变成 0002 的时候,

    1. 弹出window

    2.loadData('Id=0002' ) ,载入数据。

 

当列表页面关闭时,列表的关闭事件自动清理所关联的window。从而实现窗体的缓存与过期。 

这种缓存方式,在GIS地图展示时效果尤其明显: 每次重新地位, 地图瞬间打开,并动画的方式移动地图切换到新的坐标点。不会出现地图界面载入困难, 局部区域空白再逐步载入等问题, 大大提高了体验效果。

 

 

转载于:https://www.cnblogs.com/crabo/archive/2012/04/10/dappers_stepbystep_05.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值