我想使用缓存加载JSP页面。 我已经使用Java JSP Servlet创建了一个动态Web项目。
在这个项目中,我从Rest API调用中获取数据(以JSON格式),并将该数据动态地呈现到表内的JSP页面中。
我还在API数据中获得了带有数据时间的键名'lastUpdate'。
第一次,我必须在表中渲染数据,然后在调用Rest API之后第二次,我必须检查我的“ lastUpdate”(在缓存中可用)时间是否与“ lastUpdate”时间相同调用REST API,然后必须使用缓存显示同一页面。
我不确定是否可以,我是缓存管理的新手。
因此,请分享您的反馈意见以及一些可供我参考的示例或教程。
答案 0 :(得分:3)
您可以在标题行中使用日期,例如:
'If-Modified-Since': 'Fri, 06 Jun 2018 01:16:45 GMT'
这告诉浏览器使用浏览器缓存存储数据,如果自那时以来未对其进行修改。
服务器在创建数据时使用字段进行通信:
'Last-Modified': 'Fri, 06 Jun 2018 10:15:25 GMT'
当您询问If-Modified-Since
时,您将获得304(未修改)或200 OK(具有新的Last-Modified
值)。
答案 1 :(得分:0)
这是我从您的问题中了解的信息:
假设: 该页面对所有客户都是通用的,并且没有搜索查询等。因此,唯一的问题是是否再次呈现该页面。也就是说,我们不会在缓存中保留多个JSP。只能“返回相同的jsp”或“重新发送它”
这是我的想法:
如果您仍然想缓存JSP,这可能会起作用:
如果数据已更改/第一次:创建HttpServletResponse的包装,该包装将提供替换流,而不是真实的servlet输出流。 (它应该保留一个副本并转发到真实的servlet输出流。使用响应包装器来调用转发:
request.getRequestDispatcher(xyz.jsp“)。forward(req,resWrapper);
如果数据未更改,请从步骤1中备份并写入输出:
PrintWriter out = response.getWriter(); out.write(backupStr);