基于B/S结构中的缓存方式,可以在不同的层次上进行。笔者比较粗略地从以下几方面就行分析:
(1)浏览器缓存
(2)单台服务器缓存(hibernate、ehcache等)
(3)分布式系统中的缓存(memcache、xmemcached)
1 浏览器缓存
本博前面一段时间在《Web前端优化》系列中分析了浏览器的工作行为,其中包括了一些浏览器缓存的因素。便于大家查看,现将文档列于下:
WEB前端优化之内容篇
Web 前端优化之CSS 篇
Web 前端优化之 JavaScript
Web前端优化之Server
Web前端优化之图象
Web前端优化之Cookie
其中较多的参考了《高性能网站建设指南》一书.
另外推荐大家看一篇博文:《J2EE:web开发中的缓存问题的研究》http://www.diybl.com/course/3_program/java/javashl/20081130/152856.html。
2单台服务器缓存
单台服务器的缓存机制现在有很多,主要有两种方式:一是采用自编程序实现、二是用现在开源的框架。具体的缓存机制按物理载体又可以分为内存级别的缓存和磁盘级别的缓存。按并发策略又可以分为:事务型(Transactional)策略、读写型(read-write)策略、非严格读写型(nonstrict-read-write)策略和只读型策略(read-only)。各种策略的详情这里也不多说了,感兴趣的可以再在网上找一下相关资料。下面分析一下这一级别常用的一些缓存机制。
2.1 hibernate+ehcache
Hibernate 中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。
Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。
一级缓存
当应用程序调用Session的save()、update()、 savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在 Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。
Session为应用程序提供了两个管理缓存的方法:
evict(Object obj):从缓存中清除参数指定的持久化对象。
clear():清空缓存中所有持久化对象。
二级缓存
Hibernate的二级缓存策略的一般过程:
1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
2) 把获得的所有数据对象根据ID放入到第二级缓存中。
3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
4) 删除、更新、增加数据的时候,同时更新缓存。
Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。
至于详细的配置方式,大家可以上网去找吧。
2.2 自写原理
自己写cache无非也是把数据存于内存或者磁盘的某个地方,但是自己写需要考虑到很多方面,如缓存更新策略、缓存访问策略等等,也都不是非常容易的。这里主要是利用Spring的相关机制实现缓存。
原理如下:
1、 在开源工具如ehcache的基础上编写缓存工具类,实现缓存需要的基本操作
2、 然后实现函数的AOP拦截类,用来在函数执行前返回缓存内容
3、 配置Spring的AOP及其他的一些配置。
详细见《memcached的使用(一)》http://marc.iteye.com/blog/28700
3分布式系统中的缓存
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。
这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。、
目前,Java领域出现了xmemcached,它是基于java nio实现的memcached客户端API。
实际上是基于我实现的一个简单nio框架 http://code.google.com/p/yanf4j/的基础上实现的(目前是基于yanf4j 0.52),核心代码不超过1000行,序列化机制直接挪用spymemcached的Transcoder。
性能方面,在读写简单类型上比之spymemcached还是有差距,在读写比较大的对象(如集合)有效率优势。
分享到:
相关推荐
它支持多种数据库,如MySQL、Oracle等,并且具有高效的数据缓存机制,提高了数据访问性能。 Struts2是另一个重要的组成部分,它是基于MVC(Model-View-Controller)设计模式的Web应用框架。Struts2提供了强大的动作...
在J2EE项目开发中,MyBatis 的事务管理和缓存机制是提升系统性能和确保数据一致性的重要组成部分。 **一、事务管理** MyBatis 提供了两种事务管理方式: 1. **JDBC 事务管理**:这是最基础的方式,MyBatis 直接...
9. **性能优化**:为了提供良好的性能,项目可能采用了缓存机制、负载均衡、数据库索引优化等技术。 10. **部署与测试**:项目完成后,需要在J2EE应用服务器(如Tomcat、Glassfish等)上部署,并进行功能测试、性能...
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级应用程序的平台,它提供了服务器端的编程模型和环境。本实例源代码着重于一个经典的开发框架集成,即Struts2.0、Hibernate和Spring的组合...
- **缓存机制**: Hibernate支持一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),提高数据访问效率。 3. **Struts与Hibernate集成** - **集成方式**:通常通过拦截器或Action中的DAO层...
它的二级缓存和事务管理功能进一步提高了性能和数据一致性。 4. **网上购物系统架构**:一个典型的J2EE网上购物系统可能包括用户注册与登录模块、商品浏览与搜索模块、购物车模块、订单处理模块、支付接口集成以及...
它还支持事务管理和缓存机制,提高了性能。 4. **MVC架构**:SSH2基于MVC模式,Model代表业务模型,View负责展示数据,Controller处理用户请求并协调Model和View。这种架构有利于代码的解耦和模块化。 5. **电子...
6. **安全与性能优化**:手册还将涉及J2EE的安全机制,如角色基础的访问控制(RBAC)以及性能优化策略,如缓存管理和负载均衡。 接下来,《J2EE OA项目开发日记》提供了真实项目开发过程中的实战经验,可能包含以下...
2. "J2EE专业项目实例开发":这是一个可能包含多个子目录和文件的文件夹,其中涵盖了实际的J2EE项目实例。用户可以在这里找到项目源代码、配置文件、数据库脚本、部署描述符等,以便于理解和学习如何在J2EE环境中...
《深入解析J2EE项目源码:DigitalCampus数字校园》 在信息技术高速发展的今天,数字校园系统已经成为教育信息化的重要组成部分。"DigitalCampus数字校园"是一个基于J2EE技术平台构建的综合管理系统,旨在提升学校...
这个压缩包文件“《J2EE案例开发》源代码”包含的是一系列J2EE项目实践的源代码,是学习和理解J2EE技术体系及其实际应用的良好资源。 J2EE的核心在于它的分层架构,主要包括以下层次: 1. 客户端层(Client Layer...
它支持事务管理、缓存机制,还有强大的查询语言HQL(Hibernate Query Language),极大地提高了开发效率。 **Spring** 是一个全面的企业级应用开发框架,其核心是依赖注入(DI)和面向切面编程(AOP)。Spring可以...
**基于J2EE框架的个人博客系统项目毕业设计(代码及论文)** 本项目是一个采用J2EE技术栈实现的个人博客系统,旨在提供一个集文章发布、阅读、评论等功能于一体的在线平台。J2EE(Java 2 Platform, Enterprise ...
性能优化方面,可以使用缓存机制减少数据库查询,利用CDN加速静态资源的加载,以及通过负载均衡技术分摊服务器压力。 五、部署与扩展性 J2EE应用通常部署在应用服务器上,如Tomcat、WebLogic或JBoss等。系统设计应...
在J2EE项目开发中,Hibernate是一个非常重要的持久层框架,它简化了数据库与Java对象之间的交互,使得开发者可以更加专注于业务逻辑,而非繁琐的SQL语句编写。本实训主要围绕Hibernate框架技术展开,旨在帮助你深入...
**J2EE网上商城项目详解** 本项目是一个基于J2EE(Java 2 Platform, Enterprise Edition)框架构建的网上商城系统。J2EE是Java平台的企业版本,它为开发和部署分布式企业级应用提供了标准的架构和组件。在这个项目...
**基于J2EE框架的个人博客系统项目毕业设计** 在当今互联网时代,个人博客系统已经成为人们分享知识、表达观点和记录生活的重要平台。本项目是一个使用J2EE框架开发的个人博客系统,它集成了数据库管理、用户交互、...
通过《J2EE架构师手册》的学习,读者不仅能够深入理解J2EE的各个组成部分,还能掌握如何将这些技术综合运用到实际项目中,形成完整的解决方案,从而成为真正的J2EE架构大师。这本书无疑是你升华技术理解,领略技术...
首先,个人介绍是面试的第一步,它不仅需要展示你的基本信息,如教育背景、工作经验,还需要突出你在J2EE领域的专业技能和项目经验。例如,你可以提及你对Servlet、JSP、EJB等核心组件的理解,以及你在实际项目中...
Hibernate支持事务处理、缓存机制和复杂的查询,使得数据库操作变得更加简单和高效。 3. **Spring**:Spring框架是J2EE应用开发的重要组成部分,提供了丰富的功能,包括依赖注入、面向切面编程(AOP)、事务管理、...