面對客戶抱怨回應慢、擔心高併發撐爆系統?本文提供 7 大調優技巧,涵蓋程式碼層與伺服器配置層,讓 JSP/Servlet 回應更快、擴展性更強、負載曲線平滑上揚。
Servlet 生命週期中 init() 僅執行一次。典型案例:建立 JDBC DataSource 並緩存,避免每次 SQL 請求重複 JNDI 查找。
開發期方便的 auto-reloading,正式環境會嚴重拖累 ClassLoader,必須關閉。
<%@ page session="false"%>。invalidate() 釋放。檢查 Accept-Encoding 標頭,支援 gzip 則用 GZIPOutputStream 包裝輸出流,大幅縮減 HTML 傳輸體積。
預設每請求一執行緒,建立/銷毀開銷大。設定最小/最大執行緒池,請求峰值時平滑擴展,提升可伸縮性。
<%@ include file="..." %>(編譯期靜態包含)效能優於 <jsp:include page="..." />(執行期動態包含)。
<jsp:useBean scope="page|request|session|application">,預設 page。避免將請求級 Bean 設為 session 造成記憶體洩漏與 GC 壓力。
StringBuffer/StringBuilder 替代 +。System.out.println() 同步 I/O 阻塞,改用 Log4j。ServletOutputStream,文字用 PrintWriter,權衡轉換開銷。平台不決定效能,深入理解平台特性並精準調優才是關鍵。