2012-07-16 116 views
1

我有一個'搜索'頁面,讓用戶選擇一些搜索選項。這些選項包括由數據庫填充的許多下拉列表。這些下拉菜單可能會改變,但很少(最多一個月一次)。緩存服務器端的jsp

現在我們的頁面每次加載頁面以填充這些下拉列表時都會觸發數據庫,​​並且頁面加載時間大約爲3-4秒。我希望它能夠緩存頁面服務器端,並且每小時只能處理jsp。任何進入的請求都應該得到處理過的jsp的最新輸出,但不會導致服務器重新處理它。也就是說,我希望頁面刷新始終可以從get方法中判斷,所以現在用戶將永遠不必等待更多.5秒來獲取頁面。

是否有可能在服務器端緩存一個jsp頁面,就像你可以在asp (Is it possible to cache an asp page on the server side?)中解決這個問題?通常用什麼方法來解決這個問題?我可以想到解決方案,但如果已經開發出了常見的最佳實踐,我不想重新發明,我知道它們一定是。

謝謝!

回答

2

我不知道jsp緩存服務器端,但你也可以緩存數據庫的結果,因爲這很可能是最慢的部分。

我總是使用ehcache和spring以及aop一起實現Java方法結果的非侵入式緩存。

0

如果你使用的是彈簧,那麼我認爲彈簧cache abstraction也是用於救援。我已經在同一種場景中使用這種方法,我在緩存控制器方法和一些服務方法的輸出。 Spring緩存提供了良好的緩存使用方面的交叉問題。

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}