(Portal 开发读书笔记) Cache

简介:

 为了提高访问portal的速度,引入了Cache ,在JSR-286规范里面有两种cache :

a.缓存Portlet数据 (比如EhCache)

注意,如果是要显示实时数据的Portlet不应该用data cache

b. 缓存Portlet内容 (缓存的是Portlet的内容而不是Portal页面的内容)

 

 

对于b,内容cache,有两种类型:

基于超时(expiration-based)和基于校验的(validation-based)内容cache.

(1) expiration-based 内容cache

实现方法<1>:在portlet.xml中如下配置 ,<expiration-cache>以秒作为单位

 
 
  1. <portlet> 
  2. ... 
  3. <expiration-cache>60</expiration-cache> 
  4. <cache-scope>private</cache-scope> 
  5. <supports> 
  6. ... 
  7. </supports> 
  8. ... 
  9. </portlet> 

未超时的情况下,当portlet容器获得渲染portlet的请求时候,他不会调用render方法,而是直接返回cache里面的内容。如果超时了,则当获得渲染请求时候,他会立刻调用render方法。

<cache-scope>为public时候,这个cache的内容所有portal用户可见,为private时候,这个cache内容只有指定用户可见。

实现方法<2>:(可以覆盖<1>)

 
 
  1. public abstract interface CacheControl 
  2.   public abstract int getExpirationTime(); 
  3.  
  4.   public abstract void setExpirationTime(int paramInt); 
  5.  
  6.   public abstract boolean isPublicScope(); 
  7.  
  8.   public abstract void setPublicScope(boolean paramBoolean); 
  9.  
  10.   public abstract String getETag(); 
  11.  
  12.   public abstract void setETag(String paramString); 
  13.  
  14.   public abstract boolean useCachedContent(); 
  15.  
  16.   public abstract void setUseCachedContent(boolean paramBoolean); 

 

(2) validation-based 内容cache

它是expiration-based cache的补充,当cache超时时候,它会进行校验,如果portlet发现被cache的内容仍然合法,那么它会让portlet 容器继续使用cache中的内容持续cache设的时间,如果校验发现被cache的内容非法,则会产生新的内容。

每一个被cache的内容都有一个校验令牌(token),它被portlet设置并且存于portlet容器中。当超时发生时,可以用getETag取出来并且和原来的进行比较。

但是,很多Portlet容器并不支持validation-based cache,比如Liferay 就不支持。





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/844039,如需转载请自行联系原作者

目录
相关文章
|
JavaScript 数据可视化 前端开发
《面向三维GIS的Cesium开发与应用》读书笔记
《面向三维GIS的Cesium开发与应用》读书笔记
|
安全 测试技术 数据安全/隐私保护
软件安全开发生命周期读书笔记
分阶段: 0. 教育和意识       1.微软成功的原因在于管理层支持和教育与培训.       2.工程师必须对基本的安全弱点、常见的安全漏洞类型、基本的安全设计有所了解。
1463 0
|
存储 安全 编译器
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
|
存储 关系型数据库 编译器
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
121 1
|
存储 算法 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
77 1