2011-09-28 66 views
2

在我的一个当前项目中,JSP变得越来越庞大(大量的Java应用程序逻辑,没有Java),并且由于流量的增加,许多级别的缓存已成为必需。某些组件需要是动态的,所以我们将无法使用基于过滤器的解决方案。不幸的是,该逻辑使用了很多自定义标签,并且几乎没有使用包含,因此SimplePageFragmentCachingFilter也无济于事。有没有ehcache jsp标签?

我所寻找的是这样的:

<ehcache:cache key="${myApp.cacheKey}"> 
    <many /> 
    <jsp /> 
    <tags /> 
    <here /> 
</ehcache:cache> 

这个标签会暴露一个虚拟的作家pageContext.out并刷新该作家缓存和页面并在后续请求将直接从缓存写入到pageContext.out

有没有这样的野兽存在?

提示:我知道我们应该改变设计,减少JSP中的逻辑等。不幸的是,它不会发生。我不是在这里做决定的人,所以请不要去那里。哦,是的,我已经使用了Google。

+0

我见过这样一种机制,用于缓存整个JSP的结果。但那是在一个名为CoreMedia的专有内容管理系统内。 – nfechner

+0

@nfechner,但它是JSP内部的标签还是缓存他从外部调用JSP的机制? –

+0

第二种情况。缓存整个JSP。所以我不认为这个解决方案会帮助你。 – nfechner

回答

5

这里有两个标签库:Jakarta CacheOpenSymphony OSCache。两者都被删除,并且雅加达缓存库无处可供下载,但您仍然可以下载OSCache库hereOSCache 2.4

它应该被用来如下(你刚落JAR后/WEB-INF/lib通常的方式):

<%@taglib prefix="oscache" uri="http://www.opensymphony.com/oscache" %> 
... 
<oscache:cache key="${myApp.cacheKey}"> 
    <many /> 
    <jsp /> 
    <tags /> 
    <here /> 
</oscache:cache> 
0

我相信答案是否定的,这样的野兽不存在。

+0

我相信这应该是一个评论。 –

+1

肖恩,通常我会做这个评论。但在这种情况下,我确信这是对这个问题的正确答案。用于生成输出的JSP机制几乎可以肯定不会允许这个概念。 –

+0

由于您可以将jsp输出写入变量,因此没有什么可以阻止这种情况发生。 –

3

我做了这样一件事:https://github.com/psiegman/ehcachetag

没有用它在生产系统上还没有,但它有体面的代码覆盖率。

+0

你可以在公开回购中发布maven神器吗?即使是快照发布也会有所帮助。 – Tor