1.使用静态化页面技术:
要统计产品的浏览次数:
在<body>
<img src="http://www.site.com/data/count.do?productId=50" height=0 width=0><!--将productId=50传给count action;尽量使用该方法-->
</body>
<body onload="$get("http://www.site.com/data/count.do",{productId=50})">
<!--还可以用ajax,但若用户禁用js该方法即不起作用了-->
</body>
2.缓存技术:数据更新频率比较快,几秒更新一次,或需要实时反映数据的变化,或该页面具有很多种风格,不便于生成静态页面
3.OSCache如何实现页面缓存:
下载OSCache:opensymphony.com/oscache/
commons-logging.jar(在spring、hibernate框架里都有),若是SSH框架就不用加该包了;
oscache.jar:将下载的包解压,etc文件夹里的oscache.properties放在WEB-INF/classes下;开发阶段放在src目录下即可;
页面缓存:
页面局部缓存:缓存页面的某个栏块的HTML源代码;
4.OSCache如何实现页面局部缓存:
实现页面局部缓存:只需学会一个标签即可;
<%@taglib url="www.opensymphony.com/oscache/" profix="oscache"%><!--标签库-->
<oscache:cache key="" scope="默认是application">
<%=new Date()%><!--缓存的是往客户端输出的代码;没使用缓存情况下,每刷新一次就会更新一次-->
</oscache:cache>
原理:map.put(key,value);
key: url 即请求的路径
value:被缓存的标签里的内容
默认存放在application范围缓存:被所有用户都可以访问,共享application范围缓存;产品列表缓存
存放在session缓存:只针对某个用户缓存它的内容;缓存属于某一个用户的数据时;重新打开一个浏览器,就会重新创建一个session;
缓存默认的有效期:3600s即一个小时;
若更改缓存时间:属性time="",单位是s; 缓存若超时,缓存内容过期,oscache就会把缓存清除掉,即会重新建立缓存;
属性refresh=”true“:还没到时间过期时,强行让它过期;每刷新一次就会改变一次
属性refresh=”${param.refresh}“:强行清除缓存;
若多个jsp页面都使用局部缓存,现在需要所有jsp页面的属于application范围的局部缓存都清理掉:用该标签<oscache:flush scope="application"/>
<oscache:flush scope="session" key="foobar"/>:清除session范围内的key为foobar的缓存;
<oscache:flush scope="application" group="currencyData"/>:清除application范围内的组名为currencyData内的所有缓存;
5.OSCache如何实现页面全局缓存:
页面全局缓存:缓存整个页面的HTML源代码;
配置一个过滤器即可实现:过滤器会把服务器执行过后的往客户端输出的HTML代码缓存起来;
在web.xml的最前面:因为如果用户请求某一个路径,若发现该路径对应的缓存存在,就可以把这份缓存直接返回用户浏览器;无需执行后面的filter和操作
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.opensymphony.oscache.filter.CacheFilter</filter-class>
<init-param>
<param-name>time</param-name>
<param-value>7200</param-value><!--缓存时间为两个小时-->
</init-param>
<init-param>
<param-name>scope</param-name>
<param-value>application</param-value><!--产品列表页面;application范围的缓存-->
</init-param>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/product/list/*</filter-pattern><!--对产品列表页面进行过滤;对哪些路径的页面进行过滤;对/product/list开头的路径进行缓存-->
</filter-mapping>
清除缓存:属于application范围的缓存都清理掉:用该标签<oscache:flush scope="application"/>
6.OSCache可缓存领域对象: