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

  • 相关阅读:
    php类型运算符
    今天我开始写自己的东西
    挑选简历
    SQL Server和Oracle数据库索引介绍
    排序算法分析与设计实验
    软件框架 转
    【转】Ajax的原理和应用
    Web Service
    [转]异地分布式敏捷软件开发(Distributed Agile Software Development)
    [转]如何有效的使用C#读取文件
  • 原文地址:https://www.cnblogs.com/sunruntheway/p/4275729.html
Copyright © 2020-2023  润新知