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可缓存领域对象:

使用OSCache优化性能,及JPA二级缓存的更多相关文章

  1. Hibernate4教程六:性能提升和二级缓存

    抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略.抓取策略可以在O/R映射的元数 ...

  2. 使用Spring Ehcache二级缓存优化查询性能

    最近在对系统进行优化的时候,发现有些查询查询效率比较慢,耗时比较长, 通过压测发现,主要耗费的性能 消耗在 查询数据库,查询redis 数据库:连接池有限,且单个查询不能消耗大量的连接池,占用大量IO ...

  3. Hibernate 性能优化之二级缓存

    二级缓存是一个共享缓存,在二级缓存中存放的数据是共享数据特性     修改不能特别频繁     数据可以公开二级缓存在sessionFactory中,因为sessionFactory本身是线程安全,所 ...

  4. JPA(5)使用二级缓存

    jpa的缓存分为一级缓存和二级缓存,一级缓存值得是会话级别的,而二级缓存是跨会话级别的. 使用二级缓存,使用到了Ehcache,首先第一步需要在配置文件中配置使用了二级缓存 <shared-ca ...

  5. Hibernate JPA 中配置Ehcache二级缓存

    在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错.具体过程如下: 1, 需要引入的jar包 http://ehcache.org/downloads/catalog 下载的包 ...

  6. 【.NET Core项目实战-统一认证平台】第十五章 网关篇-使用二级缓存提升性能

    [.NET Core项目实战-统一认证平台]开篇及目录索引 一.背景 首先说声抱歉,可能是因为假期综合症(其实就是因为懒哈)的原因,已经很长时间没更新博客了,现在也调整的差不多了,准备还是以每周1-2 ...

  7. 实现asp.net mvc页面二级缓存,提高访问性能

    实现的mvc二级缓存的类 //Asp.Net MVC视图页面二级缓存 public class TwoLevelViewCache : IViewLocationCache { private rea ...

  8. JPA学习笔记(11)——使用二级缓存

    一级缓存 查询两次id为1的user User user1 = entityManager.find(User.class, 1); User user2 = entityManager.find(U ...

  9. JPA学习(五、JPA_二级缓存)

    框架学习之JPA(五) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...

随机推荐

  1. 【转载】C#使用Newtonsoft.Json组件来序列化对象

    在Asp.Net网站开发的过程中,很多时候会遇到对象的序列化和反序列化操作,Newtonsoft.Json组件是专门用来序列化和反序列化操作的一个功能组件,引入这个DLL组件后,就可使用JsonCon ...

  2. vue-quill-editor回显时移除焦点

    直接复制开用 解决在回显数据的时候会默认聚焦 this.$refs.myQuillEditor.quill.enable(false); setTimeout(() => { this.$ref ...

  3. Android Scroller详解

    在学习使用Scroller之前,需要明白scrollTo().scrollBy()方法. 一.View的scrollTo().scrollBy() scrollTo.scrollBy方法是View中的 ...

  4. scrapy 下载器中间件 随机切换user-agent

    下载器中间件如下列表 ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewa ...

  5. map put相同的key

    Map添加相同的key 2018年09月09日 10:37:12 Airport_Le 阅读数:6479   HashMap是的key是不能重复的,如果有相同的key,最后一个key对应的value会 ...

  6. CentOS7安装MySQL5.7及Tomcat8.5

    在CentOS7服务器上部署FR项目应用 一.安装CentOS-7_x86_64 1.CentOS7:带GUI的服务器(FTP服务器.JAVA平台.兼容性程序库.开发工具.安全性工具.系统管理工具): ...

  7. golang读写文件

    1. 标准输入输出 os提供了标准输入输出文件: Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") Stdout = Ne ...

  8. BUUCTF复现记录1

    平台地址:https://buuoj.cn/  里面很多之前的题目,不错的平台.另外幕后大哥博客https://www.zhaoj.in/     以下的解题,都是参考各位大佬的WP去复现,重在记录下 ...

  9. Docker万字详解!

    一.简介   1.了解Docker的前生LXC LXC为Linux Container的简写.可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C+ ...

  10. windows查看文件MD5值的命令

    今天需要,就记录一下. certutil -hashfile filename MD5 certutil -hashfile filename SHA1 certutil -hashfile file ...