【问题标题】:Caching a jsp for the server side为服务器端缓存一个jsp
【发布时间】:2012-07-16 13:21:22
【问题描述】:

我有一个“搜索”页面,可让用户按选项选择一些搜索。这些选项包括由数据库填充的许多下拉列表。这些下拉菜单可能会改变,但很少会改变(最多一个月一次)。

现在我们的页面每次加载页面以填充这些下拉列表时都会访问数据库,页面加载大约需要 3-4 秒。我希望它缓存页面服务器端,并且每隔一小时左右才处理一次 jsp。任何进来的请求都应该得到已处理 jsp 的最新输出,但不会导致服务器重新处理它。也就是说,我希望页面刷新始终与 get 方法分开,因此现在用户无需再等待 0.5 秒来获取页面。

是否可以像在asp中一样在服务器端缓存jsp页面 (Is it possible to cache an asp page on the server side?) 来解决这个问题?一般采用什么方法来解决这个问题?我可以想到解决方案,但如果已经开发出常见的最佳实践,我不想重新发明轮子,我知道它们一定是这样的。

谢谢!

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    我不知道jsp缓存服务器端,但你也可以缓存数据库的结果,因为这很可能是最慢的部分。

    我总是使用ehcache配合spring和aop来实现java方法结果的非侵入式缓存。

    【讨论】:

      【解决方案2】:

      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}
      

      【讨论】:

        【解决方案3】:

        如果您使用的是 spring,那么我认为 spring cache abstraction 也可以用于救援。我在缓存控制器方法和一些服务方法的输出的相同场景中使用了它。 Spring 缓存很好地利用了缓存作为横切关注点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-24
          • 1970-01-01
          • 2014-05-12
          • 1970-01-01
          • 1970-01-01
          • 2014-12-02
          相关资源
          最近更新 更多