使用OSCache优化性能,及JPA二级缓存
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二级缓存的更多相关文章
- Hibernate4教程六:性能提升和二级缓存
抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略.抓取策略可以在O/R映射的元数 ...
- 使用Spring Ehcache二级缓存优化查询性能
最近在对系统进行优化的时候,发现有些查询查询效率比较慢,耗时比较长, 通过压测发现,主要耗费的性能 消耗在 查询数据库,查询redis 数据库:连接池有限,且单个查询不能消耗大量的连接池,占用大量IO ...
- Hibernate 性能优化之二级缓存
二级缓存是一个共享缓存,在二级缓存中存放的数据是共享数据特性 修改不能特别频繁 数据可以公开二级缓存在sessionFactory中,因为sessionFactory本身是线程安全,所 ...
- JPA(5)使用二级缓存
jpa的缓存分为一级缓存和二级缓存,一级缓存值得是会话级别的,而二级缓存是跨会话级别的. 使用二级缓存,使用到了Ehcache,首先第一步需要在配置文件中配置使用了二级缓存 <shared-ca ...
- Hibernate JPA 中配置Ehcache二级缓存
在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错.具体过程如下: 1, 需要引入的jar包 http://ehcache.org/downloads/catalog 下载的包 ...
- 【.NET Core项目实战-统一认证平台】第十五章 网关篇-使用二级缓存提升性能
[.NET Core项目实战-统一认证平台]开篇及目录索引 一.背景 首先说声抱歉,可能是因为假期综合症(其实就是因为懒哈)的原因,已经很长时间没更新博客了,现在也调整的差不多了,准备还是以每周1-2 ...
- 实现asp.net mvc页面二级缓存,提高访问性能
实现的mvc二级缓存的类 //Asp.Net MVC视图页面二级缓存 public class TwoLevelViewCache : IViewLocationCache { private rea ...
- JPA学习笔记(11)——使用二级缓存
一级缓存 查询两次id为1的user User user1 = entityManager.find(User.class, 1); User user2 = entityManager.find(U ...
- JPA学习(五、JPA_二级缓存)
框架学习之JPA(五) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...
随机推荐
- pathlib的使用
目录 一. Python2与Python3的路径处理的对比 二. pathlib的几个使用示例 1. 最简单的使用 2. 追加路径到Python的sys.path中 3. 生成目录树的技巧 4. 递归 ...
- 【夯实基础】- Java中的fail-fast机制
转载自:Java中的fail-fast机制 遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题.下面主要看看以下几种遍历删除List中元素的形式: 1.通过普通的for删除删除符合条件 ...
- 2.在HTML中使用JavaScript
目录 1. script元素 2. 标签的位置 3.延迟和异步加载 4.嵌入代码与外部代码的区别 5.noscript元素 6. 小结 1. script元素 向HTML中插入JavaScript的主 ...
- 【RAC】 RAC For W2K8R2 安装--共享磁盘的配置(三)
[RAC] RAC For W2K8R2 安装--共享磁盘的配置(三) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学 ...
- MySQL/MariaDB数据库的服务器配置
MySQL/MariaDB数据库的服务器配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL中的系统数据库 1>.mysql数据库 是mysql的核心数据库,类 ...
- C++(四十七) — 文件输入、输出流
1.文件输入.输出流 由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,不能像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象. ifstream类,它是从istream类派生 ...
- spring cloud (三) 路由 zuul
1 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- PAT甲级1005水题飘过
题目分析:用一个字符串输入之后遍历每一位求和后,不断%10获取最后一位存储下来,逆序用对应的英文单词输出(注意输入为0的情况) #include<iostream> #include< ...
- discuz x3.4 开启tags聚合标签及伪静态配置方法
因为SEO的需要,要做tags聚合到一个页面,做到伪静态. 例如: misc.php?mod=tag >>> /tag/ misc.php?mod=tag&id=47 > ...
- HDU - 4059: The Boss on Mars (容斥 拉格朗日 小小的优化搜索)
pro: T次询问,每次给出N(N<1e8),求所有Σi^4 (i<=N,且gcd(i,N)==1) ; sol: 因为N比较小,我们可以求出素因子,然后容斥. 主要问题就是求1到P的 ...