2
A
回答
1
我不會詳談。假設你知道你在做什麼。
現在來簡單回答你的問題。我們不緩存JSP視圖。作爲一種常規做法,我們會緩存將廣泛使用的查詢的數據庫結果。順便說一下,你打算如何緩存你的JSP視圖?
+0
+1,我有一個全局過濾器,可以看到視圖的結果,所以我可以用它來緩存頁面。我原本以爲只緩存模型就足夠了,但我記得在stackoverflow博客上看到他們通過緩存部分視圖看到了很大的改進。儘管他們使用ASP.NET MVC,但是渲染視圖比渲染JSP更昂貴? – Kyle 2010-03-23 15:03:33
0
這裏的,我會用精神算法:
- 你遇到性能問題(換句話說:就是你的網站速度慢)? 如果「否」轉到步驟6
- 配置文件的代碼,找到瓶頸(實Profiler工具或只加 定時器將測量每個請求所需要的時間等)
- 查找基礎上的瓶頸在步驟2中收集的數據。
- 嘗試找到算法解決方案,即以不同的方式計算相同的結果,這需要較少的資源來限制瓶頸。如果您發現這樣的算法實施它並轉到第6步。
- 決定緩解此瓶頸的策略。緩存是解決某種問題的方法。在網站中,經常出現放緩是由於下載內容所致。在這種情況下,您可以將所有靜態內容駐留在專用服務器(不同域)中,並讓網頁從靜態網站指定內容。瀏覽器將打開第二個連接到靜態網站,這將顯着提高性能。
- 重構代碼以使其可維護,結構良好,不易出錯。
0
我使用的每用戶菜單緩存session
範圍:
<c:if test="${empty JSPCACHE_menu}">
<c:set var="JSPCACHE_menu" scope="session">
<ul id="user-menu">...</ul>
</c:set>
</c:if>
${JSPCACHE_menu}
隨着application
範圍和c:if
檢查,你可以在所有用戶之間的緩存值(例如貨幣匯率):
<c:set var="newCurrencyTS" value="currencyService.newCurrencyTS()"/>
<c:if test="${JSPCACHE_currencyTS.time < newCurrencyTS.time}">
<c:set var="JSPCACHE_currencyWidget" scope="application">
<ul>
<c:for var="i" items="${currencyService.getActualRates()}">
<li>...<li>
</c:for>
</ul>
</c:set>
<c:set var="JSPCACHE_currencyTS" value="${newCurrencyTS}" scope="application"/>
</c:if>
${JSPCACHE_currencyWidget}
相關問題
- 1. 緩存 - 最佳實踐
- 2. 緩存最佳實踐
- 3. 從靜止頁面獲取頁面結果API:最佳實踐
- 4. 搜索結果分頁,最佳實踐
- 5. 最佳實踐結果
- 6. 緩存實施的最佳實踐
- 7. 實現緩存的最佳實踐
- 8. JSP和MVC最佳實踐
- 9. 緩存管理的最佳實踐
- 10. 最佳實踐關閉JDBC結果
- 11. Facebook頁面 - 最佳實踐流程
- 12. Codeigniter菜單/頁面,最佳實踐
- 13. 針對JSP的最佳設計實踐
- 14. 使用$(document).ready(function(){})的jQuery頁面結構最佳實踐
- 15. 緩存Db結果集 - 最佳實踐? (應用程序,而不是ASP.NET)
- 16. Asp.Net分頁最佳實踐
- 17. 在頁面上存儲HTML模板的最佳實踐?
- 18. Spring + JSP url構建最佳實踐
- 19. 是否有「最佳實踐」爲JSP中
- 20. ASP.NET WebAPI 2 +實體框架連接緩存的最佳實踐
- 21. 實現緩存層的最佳實踐是什麼?
- 22. 最佳實踐緩存:單片緩存數據與細粒度緩存數據
- 23. 最佳實踐
- 24. 最佳實踐
- 25. 最佳實踐
- 26. 最佳實踐:
- 27. 最佳實踐
- 28. 最佳實踐
- 29. 最佳實踐
- 30. 最佳實踐
的問題是有點模糊。顯然,緩存的數據無需重新計算,而緩存的數據無效(過時)會浪費空間 - 經典的空間/時間折衷。數據庫查詢比渲染更昂貴嗎?也許,但只有衡量可以肯定地告訴你。 – msw 2010-03-23 04:52:23
除了空間/時間的折衷,通常很難找出緩存數據是否仍然有效。 – Thilo 2010-03-23 05:21:28