Skip to end of metadata
Go to start of metadata

简述

一个系统中总有一些非常复杂的页面,这种页面的初始化可能会消耗很长的时间,几百毫秒甚至几秒。如果我们想改进用户体验,可以考虑引入ehcache-web的页面缓存技术,使页面第一次访问的时候将生成的页面信息缓存到服务器端,这样下一次这个用户或别的用户再次访问这个页面的时候,就可以直接从服务器端的缓存中取出计算好的页面直接response输出到客户端,这样可以大大提高页面的响应速度,和改进用户的系统使用体验。

实现步骤

添加依赖的ehcache-web

添加spring配置

修改web.xml

扩展filter

如果我们想定制更复杂的规则,可以扩展SimplePageCachingFilter类。

注意事项

什么页面适合做缓存?

默认情况下,页面缓存是根据你请求的URL作为缓存的key的。如果你每次打开页面的url都不一样,那么用缓存技术是没有意义的。

例如:xxx/xxx/xxx.jsp?tasId=xxxx

上述URL是一个流程实例的审批页面,参数中包含了流程实例的id,由于流程实例每一次都是不一样的,并且对于同一个流程实例而言,不会有多人多次的重复操作,因此这种页面实现缓存是没有多大意义的

例如:xxx/xxx/xxx.jsp?type=xxx

上述URL如果type是可穷举的,并且这个URL会被很多人很多次的访问,那么这个页面实现缓存就是有意义的。

当然上述的不适合做缓存的页面在一定条件下经过改造也可以实现页面缓存。

改造方法(上面范例为例)

首先将页面请求的URL改造为与taskId无关,例如在一个IFrame框架中,我们可以将参数存储在主框架上,而在子页面加载完成后再从主框架上获取参数信息,并发出Ajax请求获取服务器端的数据。

 

Labels
  • No labels