`
- 浏览:
113511 次
- 性别:
- 来自:
苏州
-
性能方案:
1.页面静态化。只适合那些不会经常发生变化的页面(不适合条件查询和分页)。
对于经常发生变化的内容,如何进行性能优化
2.缓存方案。
1.页面缓存(性能高于二级缓存)
2.业务层缓存(二级缓存,只缓存对象),hibernate二级缓存
页面缓存
1.页面缓存的是servlet向页面输出的html代码,我们使用OsCahe作为页面缓存产品。OsCahe也可以用作二级缓存。
什么是OSCache
OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。OSCache是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。
使用OsCahe如何实现页面全局和局部缓存。
只需要学习几个标签
采用map结构的对象缓存内容,这个缓存的key就是我们请求的路径。以后只要我们访问相同的路径,就可以在map中找到这个缓存的内容。但是如果我们在路径后面加上参数,map中就找不到了。缓存就不会被使用了。
所以我们可以自己指定缓存的key的名称。
scope可以定义这个缓存的使用范围,session只对同一个会话进行缓存
time指定缓存时间,默认是1个小时。过时以后,旧缓存会丢失,重新建立新的缓存。
refresh:强行清除缓存。里面可以接收el表达式,true表示重新建立缓存。默认为false。
下面是一些示例
我们使用OsCache的标签<cache></cache>来进行页面的局部缓存.使用方法如下:
<%@taglib uri="http://www.opensymphony.com/oscache" prefix="cache"%>
<cache:cache>
<%=new Date() %>
</cache:cache>
缓存的key将以请求的URI+查询字串组成,如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到两份缓存。缓存默认存放在application范围,缓存时间默认为3600秒,即1小时.
<cache:cache key=“name”>
name=${param.name}
</cache:cache>
这时候缓存将以name为key,不再是请求的URI+查询字串组成,所以如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到一份缓存。
<cache:cache key="name" scope="session">
name=${param.name}
</cache:cache>
缓存范围设置为session,这时候缓存保存在用户的session中,如果用户把浏览器关闭,再重新打开一个新浏览器,原来缓存的内容将不存在。
<cache:cache key="name" time="10">
name=${param.name}
</cache:cache>
上面设置了缓存的时间为10秒,超过10秒后,缓存的内容将失掉。
<cache:cache key="name" time="60" refresh="${param.refresh}">
name=${param.name}
</cache:cache>
refresh为true将会导致缓存的内容过期而被清除,简单地说,该属性为true用于清除缓存。
人为管理缓存<flush />标签:
<cache:flush scope="application" />
清除application范围内的所有缓存
<cache:flush scope="session" key="foobar" />
清除session范围内的key为foobar的缓存。
<cache:flush scope="application" group="currencyData" />
清除application范围内组名为currencyData内的所有缓存。
全局缓存
实际上就是在web.xml里配置一个filter
页面全局缓存将使用Filter实现:
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>60</param-value>
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>application</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
对指定url的页面进行缓存
<url-pattern>/product/list/*.jsp</url-pattern>
</filter-mapping>
我们应该把这个filter放在web.xml最前面,这样当用户访问某个缓存中存在的内容,就直接返回缓存中的内容,后面filter中的工作就不会有机会做,事实上也没有必要做,这样可以提高性能。
缓存的key将以请求的URI+查询字串组成,如果你访问/oscache/index.jsp?name=ttt和/oscache/index.jsp?name=ppp将得到两份缓存。缓存是在初次访问页面时进行的,后续的请求将会返回缓存中的内容。缓存中存放的内容为页面返回给用户的html源代码。
全局缓存原理
在filter中大概是这样的:
内部保存html的是一个map,以当前请求的url为key,当一个请求到达是这样的
Filter{
判断当前map中是否包含这个url,如果包含就返回map中保存的这个url相关的html,doFilte中的代码就不会被执行,
If(map.contains(url)){
Response.write(map.get(url));
}else{
如果map中没有这个url,就需要向服务器请求,为了保存服务器返回的html页面内容,需要对response对象进行一次包装,让他能够保存这个html页面
WarpedResponse = ResopnsWarpp(response)
//注意,执行请求的时候的response对象已经是被包装后的了,里面有一个cache字段保存服务器返回的html代码
doFilter(request, WarpedResponse)
然后把返回的html保存进自己的map中
Map.put(url, WarpedResponse.getCache)
}
}
OSCache的配置属性介绍
cache.memory=true
指定是否使用内存缓存,默认值为true,即使用内存缓存。
cache.capacity
指定缓存的容量,默认的容量是无限的。我们可以为它设置缓存数量,如:
cache.capacity=100000
如果我们要使用硬盘缓存,可以这样设置:
cache.memory=false
cache.path=d:\\cache (指定,缓存保存的路径,注意:路径应采用双\符)
cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener
cache.persistence.class用于设置持久化类。
关于二级缓存
如果数据需要实时更新,就必须用二级缓存
我们对实体的更新会同步到二级缓存,以后取数据都是从二级缓存中获取,而二级缓存总是保证实时更新的,所以提高了性能。
使用二级缓存和使用页面缓存的对比
他们都可以实现性能的提高,减轻服务器的压力,二级缓存可以实现数据的实时更新,如果数据不需要实时更新,页面缓存性能要高于二级缓存。因为如果使用二级缓存,我们的执行步骤是这样的
1. 发送*.do的请求,由中央控制器发送到对应的action
2. 在action中,spring注入service层对象,执行execute方调用service.find方法,这个方法可以从二级缓存中取得数据,不需要调用数据库。
3. 把action中获得的数据发送到页面,jsp负责解析数据,生成html代码。
如果使用页面缓存,这些工作在filter中从保存缓存html的map中就可以取得html页面,直接response.write就可以了。工作流程比二级缓存简单多了
关于缓存的问题:
缓存的内容被保存在一台机器,如何在多台服务器上共享。
解决方案:分布式缓存,最好使用jbossCache。如果使用OsCache可以专门使用几台机器专门管理cache,收到使用广播的方式发送到其他服务器。
多台服务器运行,索引只建立在一个机器上,如何让索引在不同服务器间共享。
必须采用分布式。这个时候最好使用ejb
建立一个无状态bean
把索引和jboss在一台服务器上。这个时候就查询这台jboss所在的服务器,这个bean就在这个机器上查询索引,所有的查询请求都发送到这个ejb的这个bean的方法处理。
这个方案牵扯到索引的建立,牵扯到一个事务的问题。要保证compass的事务和ejb的事务要一起做。
目前compass文档中有spring+compass的方案,但是ejb+compass的方案没有提到。事务如何保证控制在一起是个问题。
如果再被问到:当作为ejb服务器的jboss服务器本身也需要分布式该怎么办?
这个时候就回答jboss本身可以配置“集群”,具体的做法不清楚。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
OSCache是开源的Java缓存解决方案,主要用于提高Web应用程序的性能和响应速度。它是由OpenSymphony团队开发的,能够缓存对象、SQL查询结果甚至整个页面,避免了频繁访问数据库或执行昂贵的计算,从而降低了系统负载...
《osCache缓存配置详解》 osCache是Java平台上的一个高效、易用的缓存解决方案,它由Tuckey组织开发,广泛应用于各种Web应用中,以提高数据读取速度,减轻数据库压力。osCache的核心功能是提供了一个内存中的对象...
oscache-2.1.jar oscache-2.1.jar
### Oscache框架的搭建与应用详解 在现代Web开发中,缓存技术是提升系统响应速度、优化用户体验的关键策略之一。Oscache框架作为一种高效、灵活的缓存解决方案,在Java Web应用,尤其是JSP环境中,提供了强大的缓存...
osCache 是一个开源的、基于Java的缓存框架,它为Java应用程序提供了高效且可配置的内存缓存功能。在本文中,我们将深入探讨osCache的基本概念、工作原理以及如何在实际项目中进行配置和使用。 一、osCache基本概念...
OSCache 是一个高效的、开源的缓存框架,主要用于 Java 应用程序,它提供了一种在内存中存储对象的方式,以提高数据访问速度并减轻数据库的负载。在Java Web开发中,OSCache常被用于实现Session复制和分布式缓存,...
OSCache 是一个强大的开源缓存解决方案,主要用于提升 Java Web 应用程序的性能。它能够缓存页面内容,减轻数据库压力,并减少服务器的资源消耗。本文将详细介绍 OSCache 的配置和使用方法。 **一、缓存整个页面** ...
本文档的主要目的是阐述OSCache的核心功能、配置方法以及实际应用中的操作步骤,帮助开发者理解和有效地利用OSCache提升应用程序性能。 阅读对象: 此文档适合对Java Web开发有一定了解,希望引入缓存机制以优化...
OSCache是OpenSymphony开发的一款高效、开源的Java缓存框架,主要应用于Web应用程序,特别是JSP环境。其核心功能是提供内存级别的缓存服务,从而显著提高网页的加载速度和减少数据库的压力。标题"oscache-2.4.1-full...
osCache是Java开发中常用的缓存框架之一,它主要用于提高应用程序的性能和效率,通过将数据存储在内存中,减少对数据库的访问。osCache不仅可以用于Web应用,也可以用于任何Java应用程序,支持集群环境,提供了丰富...
- 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...
javaweb做页面缓存常用,OSCache是一个工业级的J2EE缓存实现。OSCache不但能缓存java对象,还可以缓存页面,http请求和二进制内容,例如pdf文件等。通过应用OSCache,我们不但可以实现通常的Cache功能,还能够改善...
**osCache:高效缓存框架详解与实例应用** osCache是一款流行且强大的Java缓存框架,主要用于提高应用程序的性能和响应速度。它通过将经常访问的数据存储在内存中,避免了反复读取数据库或计算数据的过程,从而显著...
OsCache是Java应用程序中常用的缓存框架,它能够有效地提高应用程序的性能,通过将经常访问的数据存储在内存中,减少对数据库或其他数据源的访问,从而降低系统负载。本示例将通过一个天气预报Web服务的场景,详细...
1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究
**osCache缓存技术详解** osCache是一款广泛应用于Java应用程序中的开源缓存解决方案,由OpenSymphony团队开发。它提供了一种高效、可扩展的方式来管理应用程序中的数据缓存,从而提高系统的性能和响应速度。...
osCache是Java平台上的一个开源缓存解决方案,主要用于提高应用程序的性能和响应速度。oscache-2.2jar包是该软件的一个版本,版本号为2.2。它包含了一系列的类和接口,用于实现内存中的对象缓存,从而减少对数据库或...
OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...
osCache是Java平台上的一个高效的缓存解决方案,主要用于在应用程序中缓存数据,以提高性能和减少数据库的负载。这个工具特别适用于那些需要频繁访问但更新不频繁的数据,例如经常查询但很少更改的数据库记录。...