代码改变世界

OScached缓存整个页面和缓存局部页面

2017-11-15 22:39  晨曦曙光  阅读(446)  评论(0编辑  收藏  举报

1.缓存整个页面

    在OSCache组件中提供了一个CacheFilter用于实现页面级的缓存。主要用于对web应用中的某些动态页面进行缓存,尤其是那些需要生成PDF格式文件/报表、图片文件等的页面,不仅减少了数据库的交互、减少数据库服务器的压力,而且对于减少web服务器的性能消耗有很显著的效果。

   功能是通过在web.xml中进行配置来决定缓存哪一个或者哪一组页面,而且还可以设置相关缓存属性。

缓存指定页面,配置如下:    

[html] view plain copy
 
  1. <filter>     
  2.     <filter-name>CacheFilter</filter-name>     
  3.     <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class>      
  4.     <!-- 设置缓存时间 -->  
  5.     <init-param>      
  6.         <param-name>time</param-name>     
  7.         <param-value>600</param-value>     
  8.     </init-param>      
  9.     <!-- 设置作用范围 -->  
  10.     <init-param>       
  11.        <param-name>scope</param-name>      
  12.        <param-value>session</param-value>     
  13.     </init-param>      
  14. </filter>       
  15. <filter-mapping>       
  16.     <filter-name>CacheFilter</filter-name>  
  17.     <!-对页面 main.jsp 进行缓存-->       
  18.     <url-pattern>main.jsp</url-pattern>   
  19.     <!-对所有jsp页面内容进行缓存       
  20.     <url-pattern>*.jsp</url-pattern>  -->      
  21. </filter-mapping>  

备注:

 

1.在页面级缓存的情况下,可以通过设置CacheFilter的初始属性来决定缓存的一些特性:time属性设置缓存的时间段,默认为3600秒,可以根据自己的需要只有的设置,而scope属性设置,默认为application,可选项包括application、session。

2.只有客户访问时返回http头信息中代码为200(也就是访问已经成功)的页面信息才能够被缓存。

2.缓存局部页面

    使用OScache标签,用标签把指定的内容给包含起来。在标签中可以设置缓存的属性。
用OSCache局部缓存,保存页面中的内容:
[plain] view plain copy
 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@ page language="java" import="java.util.*" %>  
  4. <%@ page language="java" import="java.text.*" %>         
  5. <%@ taglib uri="http://www.opensymphony.com/oscache" prefix="cache" %>      
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  7. <html>  
  8. <head>  
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  10. <title>Insert title here</title>  
  11. </head>  
  12. <body>  
  13.     <%SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); %>  
  14.     <div>  
  15.         <cache:cache key="cacheDate" scope="session" time="15">   
  16.             <h2>使用缓存,让时间在15秒内不进行更新</h2>  
  17.             <div><%  
  18.                 String cacheTime = sdf.format(new Date());  
  19.                 out.println(cacheTime);               
  20.                 %>  
  21.             </div>  
  22.         </cache:cache>  
  23.     </div>  
  24.     <hr>  
  25.     <div>  
  26.         <h2>不使用缓存</h2>  
  27.         <div><%  
  28.             String commonTime = sdf.format(new Date());  
  29.             out.println(commonTime);  
  30.          %></div>  
  31.     </div>  
  32. </body>  
  33. </html>  
 
页面效果: