2011-09-28 134 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