`
MarkDong
  • 浏览: 2395 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

域对象事件驱动的缓存策略(一)

    博客分类:
  • J2EE
阅读更多

      在各种项目中,通常依靠缓存机制来提高系统的相应速度。各种系统软件从操作系统到数据库软件均有内部的缓存机制,很多第三方开源类库也有缓存机制,例如Hibernate的二级缓存和查询缓存。但是有了这些缓存就够了吗?其实远远不够,根本的原因就是这些缓存机制所处软件分层的层次距离用户太远。正因为距离用户太远,所以它们的功能都比较通用,不能针对独特的用户需求采用最直接有效的缓存策略。

      正因为有了上述的原因,才有了页面缓存这一概念。页面缓存可以说是最贴近用户的缓存,它直接把需要展现给用户的内容缓存起来。但是常用的页面缓存技术也存在缺陷,它们不能及时获取底层数据的变化,通常只是定时的进行缓存强制刷新。这样,对于一些变更比较频繁(注意,这里说的是比较频繁)的业务系统,页面缓存无法及时更新缓存内容,造成在这些系统中无法使用页面缓存。其实,在上述的系统中并不是就不能使用页面缓存了,只要解决了上述的页面缓存无法及时获知底层数据变化的缺陷,那么在任何变化不那么剧烈的系统中都可以使用页面缓存。

      为了使页面缓存可以获知底层数据的变化,我想到一种策略暂且称之为“域对象事件驱动的缓存策略”。域对象的事件无非就是三种:增加、删除、修改。只要这三种事件发生时,可以通知缓存系统某个域对象发生了变化,再由缓存系统将该域对象相关的被缓存信息淘汰掉即可。那么我们只要提供一种机制,可以把缓存内容的键值和域对象关联起来就可以解决这个问题了。

      采用这种机制要求被缓存页面的粒度要尽量的小,这样每个页面所关联的域对象才更少,缓存的效率才会更高。那么要求使用这种页面缓存的时候,尽量将大的页面拆分为各个相对独立的局部页面,针对这些细粒度的局部页面做缓存就可以提供非常高效的缓存机制。这样的要求恰好和现在的AJAX技术的局部刷新策略非常吻合。

 

1
0
分享到:
评论

相关推荐

    使用域驱动设计、CQRS和事件源的实验性全栈应用程序 -C#-TypeScript-下载

    这是一个关于使用域驱动设计(Domain-Driven Design, DDD)、命令查询责任分离(Command Query Responsibility Segregation, CQRS)和事件源(Event Sourcing)构建的全栈应用程序的实验项目,主要采用C#和...

    概述ASP.NET缓存机制

    应用程序缓存由`System.Web.Caching.Cache`类管理,每个应用程序域有一个独立的实例。开发者可以通过`Add`或`Insert`方法添加数据,使用`Remove`方法移除数据,也可以设置数据依赖性以根据依赖项的变化自动移除缓存...

    WDF KMDF 内核模式驱动框架结构

    - **同步域**:定义一组需要同步的对象或操作。 - **执行等级**:确定线程的优先级和运行顺序。 - **锁**:提供互斥访问资源的机制。 - **同步机制的相互影响**:描述不同同步机制之间的交互作用。 - **安全**:处理...

    ChatRoom(.net remoting技术)

    8. **性能优化**:为了提供实时的聊天体验,开发者可能会使用异步调用、缓存策略以及优化的数据传输格式来减少延迟和提高效率。 9. **事件驱动编程**:在聊天室这样的多用户环境中,事件驱动编程模型非常常见。当...

    .NET Remoting

    7. **性能优化**:.NET Remoting支持缓存策略,如客户端缓存和代理对象缓存,以减少不必要的网络通信,提高性能。 8. **事件处理**:Remoting支持异步事件处理,允许客户端订阅服务器端的事件,当事件触发时,...

    基于Remoting技术的电子白板

    Remoting技术是.NET框架提供的一种跨进程通信(IPC)机制,它允许对象在不同的应用程序域(AppDomain)之间进行交互,甚至是跨越网络。在“基于Remoting技术的电子白板”项目中,这一技术被用来实现实时的协同聊天和...

    前端面试每日 31以面试题来驱动学习提倡每日学习与思考每天进步一点每天早上5点纯手工发布面试题死磕自己愉悦大家6000道前端面

    10. 性能优化:减少DOM操作、缓存策略、代码压缩等。 11. ES6及以上新特性:let和const、解构赋值、模板字符串、箭头函数、类和模块等。 深入学习JavaScript,不仅需要理解这些基本概念,还要掌握它们的实际应用,...

    使用 ACTIONSCRIPT® 3.0 开发指南

    - **缓存策略**:根据应用场景选择合适的缓存策略,减少网络请求次数。 #### 三、使用ACTIONSCRIPT® 3.0组件 ActionScript 3.0不仅提供了一套完整的语言特性,还内置了一系列实用的组件库,帮助开发者快速构建...

    ASP.NET的网页代码模型及生命周期

    在传统的ASP开发中,ASP的事件都是按照网页的顺序来处理的,一般情况下,ASP页面的事件都是从上到下处理事件,可以说ASP的开发是一个线性的处理模型。在用户的浏览操作中,每一次用户的操作都会导致页面重新被发送到...

    学生考试专用MCITP题库.pdf

    正确答案是C:修改默认域策略组策略对象(GPO)中的事件日志策略设置,增大日志容量或设置日志满后如何处理的策略。 7. 用户无法从Client 1登录到域,提示信息表明计算机账户问题。解决方法是恢复或更新计算机账户...

    JavaScript范例.part16

    10. **性能优化**:包括减少DOM操作、缓存计算结果、避免全局变量、合理使用事件委托等策略,以提升JavaScript代码的执行效率。 "JavaScript范例.part16"可能就这些或类似的高级主题提供实例和实践,帮助开发者深化...

    java面试Spring.pdf

    Spring通过三级缓存策略来解决循环依赖问题,分别是单例Bean的早绑定、Eager初始化和延迟初始化。 **Spring的自动装配**: Spring支持自动装配,可以通过`autowired`和`@Qualifier`注解来自动匹配和注入Bean。 **...

    (JavaScript.Patterns).Stoyan.Stefanov.文字版

    11. **性能优化**:包括DOM操作优化、代码压缩、缓存策略等,这些技巧可以帮助提升JavaScript应用的运行效率。 12. **跨域通信**:JSONP、CORS、WebSocket等技术用于实现JavaScript跨域请求,这对于构建分布式Web...

    Asp.Net知识库

    Asp.Net知识库是一个综合性的资源集合,涵盖了多个关键领域,包括数据库开发、XML处理、Web服务、对象与控件的使用、缓存策略、系统设计、网络应用程序、文件操作、系统控制以及图像和多媒体处理。以下是这些领域的...

    Javascript高级教程

    事件驱动编程也是JavaScript的一大特色。通过监听和处理用户或系统的各种事件,如点击按钮、页面加载等,我们可以实现动态的交互效果。同时,JavaScript还支持回调函数和Promise,用于处理异步操作,提高代码的...

    一个有梦想的JS monkey的黄金屋.rar

    12. **Web性能优化**:包括代码分割、懒加载、缓存策略、HTTP/2等,提升网页加载速度和用户体验。 13. **JavaScript测试**:包括单元测试、集成测试和端到端测试,确保代码的质量和稳定性。 14. **错误处理**:...

    javascript 精典

    1. **基础语法**:JavaScript是一种基于对象和事件驱动的脚本语言,其基础语法包括变量声明(var, let, const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(算术、比较、逻辑等)...

    javascript

    13. **性能优化**:包括减少HTTP请求、压缩资源、缓存策略、懒加载、事件委托、避免阻塞主线程等技巧,以提升网页加载速度和用户体验。 14. **安全性**:XSS(Cross-Site Scripting)和CSRF(Cross-Site Request ...

    JavaScript 语言参考

    JavaScript,也被称为JS,是一种广泛应用于网页和网络应用的轻量级、解释型编程语言,主要特点是支持事件驱动、函数式以及基于原型的编程风格。它与Java虽然名字相似,但两者之间并没有直接关联。JavaScript通常与...

    深入浅出Hibernate

    Hibernate的主要特点是可以自动管理对象的状态(瞬态、持久态、托管态),并提供了多种缓存机制以提高应用程序的性能。 **在MyEclipse中配置MYSQL数据库** 为了在MyEclipse中配置MySQL数据库,你需要按照以下步骤...

Global site tag (gtag.js) - Google Analytics