zoukankan      html  css  js  c++  java
  • 使用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可缓存领域对象:

  • 相关阅读:
    Network (poj1144)
    C. Hongcow Builds A Nation
    ZYB loves Xor I(hud5269)
    D. Chloe and pleasant prizes
    Game(hdu5218)
    约瑟夫环的递推方法
    Misaki's Kiss again(hdu5175)
    Exploration(hdu5222)
    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses
    C. Arpa's loud Owf and Mehrdad's evil plan
  • 原文地址:https://www.cnblogs.com/sunruntheway/p/4275729.html
Copyright © 2011-2022 走看看