使用oscache提高程式效能,oscache程式效能
一. 簡介
oscache是一個廣泛採用的高效能的j2ee緩衝架構,能應用於任何java應用程式的普通的緩衝解決方案。
二. 特點
1. 可以緩衝任何對象, 你可以不受限制的緩衝部分jsp頁面或http請求,任何java對象都能緩衝
2. 可以永久緩衝,因為緩衝能隨意的寫入硬碟
3. 支援叢集
4. 可以控制緩衝對象的到期
三. 使用
1.對局部頁面緩衝
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.opensymphony.com/oscache" prefix="cache"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'index.jsp' starting page</title></head><body><h1>測試1</h1> 沒有緩衝的日期:<%=new Date()%><br><!-- 頁面局部緩衝,使用標籤 --><cache:cache time="5" key="cacheDate" scope="application"> 緩衝局部頁面,每5秒重新整理緩衝一次,日期: <%=new Date()%></cache:cache><br></body></html>
2.對整個頁面緩衝
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://www.opensymphony.com/oscache" prefix="cache"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'index.jsp' starting page</title></head><body><!-- 頁面全域緩衝,在web.xml中配置 --><h1>測試2</h1>緩衝整個頁面,每10秒重新整理緩衝一次,日期:<%=new Date()%><br></body></html>
3.緩衝對象
public class CacheServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) {int refreshPeriod = 10; // cache in 6 secondsGeneralCacheAdministrator cache = new GeneralCacheAdministrator();try {// get data from cacheDate myDate = (Date) cache.getFromCache("myDate", refreshPeriod); System.out.println("current date is : " + myDate); } catch (NeedsRefreshException e) {try {Date myDate = new Date();// put data into cachecache.putInCache("myDate", myDate);} catch (Exception ex) {cache.cancelUpdate("myDate");}}}}oscache.properties
#預設在記憶體中作緩衝,如設定為false,那cache只能緩衝到資料庫或硬碟中cache.memory=false#持久化緩衝類,如此類開啟,則必須設定cache.path資訊 cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener#建立磁碟緩衝cache.path=D\:\\cache#緩衝元素個數 cache.capacity=1000#cache.cluster 為叢集設定資訊。如#cache.cluster.multicast.ip為廣播IP地址#cache.cluster.properties為叢集屬性
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><filter><filter-name>CacheFilter</filter-name><!-- CacheFilter只捕獲Http頭為200的頁面請求,即只對無錯誤請求作緩衝 --><filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class><init-param><!-- 緩衝內容的時間段,單位是秒,預設是3600秒 --><param-name>time</param-name><param-value>10</param-value></init-param><init-param><param-name>scope</param-name><param-value>application</param-value></init-param></filter><!-- cache all the cache.jsp file --><filter-mapping><filter-name>CacheFilter</filter-name><url-pattern>/cache2.jsp</url-pattern></filter-mapping><servlet><servlet-name>cacheServlet</servlet-name><servlet-class>com.zdp.cache.CacheServlet</servlet-class></servlet><servlet-mapping><servlet-name>cacheServlet</servlet-name><url-pattern>/cacheServlet</url-pattern></servlet-mapping><welcome-file-list><welcome-file>cache1.jsp</welcome-file></welcome-file-list></web-app>
四. 核心API - GeneralCacheAdministrator:
1.void putInCache(String key,Object content);//put on Object in a cache
2.Object getFromCache(String key);// get on Object from the Cache
3.void removeEntry(String key);// remove an Object in a cache
4.void flushEntry(String key);// flushes a single cache entry
5.void flushAll();// flush the entire cache immediately
6.void cancelUpdate(String key);// cacels a pending cache update
參加資料:http://www.cnblogs.com/huzi007/p/3873396.html