oscache:由OpenSymphony設計,它是一種開創性的JSP定製標記應用,提供了在現有JSP頁面之內實現快速記憶體緩衝的功能。
業務描述:網站對於不經常變動的內容可以用頁面的局布緩衝,提高網站訪問速度
一、全域緩衝
1,引入JAR oscache-2.4.1.jar
2配置oscache.properties
3 指定記憶體中緩衝的對象個數cache.capacity=10000
4在web.xml中指定緩衝到期時間。以及對哪些訪問路徑進行緩衝
<!-- 頁面緩衝 ,緩衝5分鐘 -->
<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>300</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-pattern>*.action</url-pattern>
</filter-mapping>
二、對局布緩衝
(1)引入JAR oscache-2.4.1.jar
(2)引用緩衝標籤<%@taglib uri="/WEB-INF/lib/oscache-2.4.1.jar" prefix="os" %>
(3)把需要局布緩衝的內容放進緩衝標籤裡面<os:cache time="10" > <%=new Date() %></os:cache>
同時可以指定到期時間,是否重新整理,作用範圍
參數說明:
time="10"指定到期時間
refresh="false"是否時時重新整理
scope="request" 緩衝範圍 request,page,session,application
======================================
ehcache:是一個純Java的進程內緩衝架構,具有快速、精乾等特點,是Hibernate中預設的CacheProvider。
1>. 配置echcache.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="1200" timeToLiveSeconds="1200" overflowToDisk="false" >
</defaultCache>
<!-- 單獨對某個entity的緩衝原則設定
<cache name="com.payment.entity.PromotionEntity" maxElementsInMemory="100"
eternal="false"
timeToIdleSeconds="1200" timeToLiveSeconds="1200" overflowToDisk="false"
clearOnFlush="true">
</cache>-->
</ehcache>
2>.開啟二級緩衝,修改persistence.xml檔案(這裡針對jpa,前面已經對hibernate二級緩衝寫了部落格,在這就不再寫了)
<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="education" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.jdbc.fetch_size" value="18"/>
<property name="hibernate.jdbc.batch_size" value="10"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="false"/>
<!-- 設定II級緩衝供應商 -->
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" />
<property name="hibernate.cache.provider_configuration" value="/ehcache.xml" />
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_structured_entries" value="true"/>
</properties>
</persistence-unit>
</persistence>
3>.指定那些實體類使用二級緩衝:1、在實體上加註解;2、在查詢時先設定緩衝,再查詢。