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. Oracle数据库之初识部分知识

    Oracle是比MySql更为严格的数据库.使用时需要更加严谨. 一.安装注意事项: 1.选择地址时需要注意好不能有汉字,以免造成安装的时候注册表显示监听失败: 2.可视化窗口PLSQL编辑器(相当于 ...

  2. 编译 Unity 4.3.1 引擎源码

    引言 Unity 官方从 Unity 2017.1 版本开始,开源了引擎和编辑器的C#源码(源码地址:UnityCsReference),但核心的 C/C++ 部分源码并未开源. 编译环境 网上主要的 ...

  3. 安装nginx + nginx-gridfs + mongodb

    1.安装依赖包 yum -y install pcre-devel openssl-devel zlib-devel git gcc gcc-c++ git clone https://github. ...

  4. 【OGG】OGG的单向复制配置-支持DDL(二)

    [OGG]OGG的单向复制配置-支持DDL(二) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的 ...

  5. Django-模型层(多表操作)

    目录 1.创建模型 1.1方式一:自行创建第三张表 1.2方式二:通过ManyToManyField自动创建第三张表 1.3关于db_column和verbose_name 1.4关于on_delet ...

  6. linux中container_of

    linux 驱动程序中 container_of宏解析 众所周知,linux内核的主要开发语言是C,但是现在内核的框架使用了非常多的面向对象的思想,这就面临了一个用C语言来实现面向对象编程的问题,今天 ...

  7. Codeforces E. Weakness and Poorness(三分最大子列和)

    题目描述: E. Weakness and Poorness time limit per test 2 seconds memory limit per test 256 megabytes inp ...

  8. Collaborative Knowledge base Embedding (CKE)

    Collaborative Knowledge base Embedding (CKE) 在推荐系统中存在着很多与知识图谱相关的信息,以电影推荐为例: 结构化知识(structural knowled ...

  9. WebKit应用程序开发的起因

    公司的Web管理界面,用起来还可以,但是有一个问题一直无法解决. 在web页面上需要播放视频,由于比较这个功能比较老,不支持web模式播放,只支持CS模式,具体原因及不说了. 于是有了 winform ...

  10. 【转】libgo

    原文:https://blog.csdn.net/libaineu2004/article/details/80554870 ------------------------------------- ...