我有一个“搜索”页面,让用户可以选择一些搜索选项。这些选项包括数据库填充的一些下拉列表。这些下拉列表可能会发生变化,但很少会发生变化(最多每月一次)。
现在我们的页面每次加载页面时都会访问数据库以填充这些下拉列表,页面加载大约需要3-4秒。我希望它缓存页面服务器端,并且每小时左右只处理一次jsp。任何进来的请求都应获取已处理的jsp的最新输出,但不会导致服务器重新处理它。也就是说,我希望页面刷新始终是get方法的首选,所以现在用户永远不必等待.5秒来获取页面。
是否可以像在asp中一样在服务器端缓存jsp页面 (Is it possible to cache an asp page on the server side?)解决这个问题?通常采用什么方法来解决这个问题?我可以想到解决方案,但如果已经开发出了常见的最佳实践,我不想重新发明轮子,我知道它们一定是这样。
谢谢!
答案 0 :(得分:2)
我不知道jsp缓存服务器端,但你也可以缓存数据库的结果,因为这很可能是最慢的部分。
我总是将ehcache与spring和aop一起使用来实现java方法结果的非侵入式缓存。
答案 1 :(得分:1)
JSTL c:set
怎么样?这里是菜单缓存的例子:
<c:if test="${empty JSPCACHE_menu}">
<c:set var="JSPCACHE_menu" scope="session">
<ul id="user-menu">...</ul>
</c:set>
</c:if>
${JSPCACHE_menu}
答案 2 :(得分:0)
如果你使用的是春天,我认为春天cache abstraction也是为了救援。我在同一种情况下使用它,我缓存控制器方法和一些服务方法的输出。 Spring缓存可以很好地利用缓存作为交叉问题。