วันก่อนเขียนเรื่องการ tuning javascript มีคนมาถามผมว่าเราจะมีการเพิ่ม performance ให้กับ JSP อย่างไรผมเลยเอา trick นี้มาฝากครับ
- ใช้ HttpSession.invalidate() เพื่อที่จะใช้ clean session เนื่องจากว่าบางครั้ง session ที่เราจองไว้นั้นถ้าหากไม่มีการใช้นานๆ ก็จะเปลืองหน่วยความจำ ดังนั้นเราจึงควรที่จะ clean session ที่ไม่ได้ใช้คืนหน่วยความจำ
- ในหน้าของ JSP ใดที่ไม่มีการใช้ session เพื่อเป็นการประหยัดทรัพยากรของเครื่อง Application Server เราจึงควรที่จะบอกมันไว้ว่า เราไม่มีการใช้ session ในหน้า page นี้โดยการใช้
- ให้เรา Implement HttpSessionBindingListener สำหรับ bean ทุกตัวที่มี scope อยู่ใน session เพื่อที่จะให้ bean นั้น สามารถคืนทรัพยากรให้กับระบบได้โดยการใช้ method valueUnbound() เมื่อไม่มีการใช้ bean นั้นแล้ว
- เราควรที่จะตั้งค่า session timeout ให้เร็วขึ้น เพื่อที่จะได้คืนทรัพยากรให้กับระบบได้เร็วขึ้น เราจะตั้งค่านี้ผ่าน method session.setMaxInactiveInterval() ส่วนค่าที่เหมาะสมควรเป็นเท่าใด นักพัฒนาที่คลุกคลีกับระบบนั้น ๆ น่าจะเป็นคนที่รู้ดีที่สุด
- ให้พยายามใช้ที่จะใช้ include directive เช่น <%@ include file="header.html" %>ในทุกที่ที่เป็นไปได้ เพราะมันจะทำงานตอน compile time แต่ถ้าใช้ jsp:include จะทำงานตอน run time ครับ
- พยายามใช้ cache tagging ในทุกที่ที่เป็นไปได้ครับ cache tagging จะทำหน้าที่เก็บ tag ที่ compile จาก JSP file เสร็จแล้ว เมื่อมีการเรียกใช้ในส่วนนั้นก็ไม่ต้อง compile ใหม่ สามารถดึงมาจาก cache นำไปใช้งานได้เลย
- ซึ่งการที่จะ cache tagging นั้นไม่จำเป็นที่ต้องทำการ cache ทั้งหน้า สามารถจะ cache ในส่วนใดส่วนหนึ่งของ JSP ได้ดังเช่นตัวอย่างด้านล่างซึ่งเป็นตัวอย่างของ struts framework ซึ่งต้องทำตามขั้นตอนดังนี้
1. ให้ copy tag library descriptor ของ cache tagging ของ apache ลงใน sub directory /WEB-INF application ของเรา
2. ให้ cpoy taglibrary ของ JAR file ที่ sub directory ลงใน /WEB-INF/lib ของ application ของเรา
3. ให้ใส่ element
<taglib>
<taglib-uri>http://jakarta.apache.org/taglibs/cache-1.0</taglib-uri>
<taglib-location>/WEB-INF/cache.tld</taglib-location>
</taglib>
4. ในหน้า page ไหนที่เราต้องการใช้งานเราต้องทำการใส่ directive ดังนี้
<%@ taglib uri="http://jakarta.apache.org/taglibs/cache-1.0" prefix="cache" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/cache-1.0" prefix="cache" %>5. ในส่วนไหนของหน้า JSP นั้นต้องการทำ cache tagging ก็ให้เอา element ของ cache tagging ครอบตรงส่วนนั้นเลยดังนี้
<cache:cache scope="application" name="birthdays" key="${user}">
... code that retrieves the user's birthday ...
</cache:cache>
cache tagging นี้สามารถไปดูรายละเอียดได้ที่นี้http://jakarta.apache.org/taglibs/doc/cache-doc/index.html
หวังว่าคงจะช่วยในการเพิ่มความเร็วได้ไม่มากก็น้อยครับ ถ้ามีเรื่องเกี่ยวกับพวกนี้อีกจะเอาบทความมาฝากครับ
ที่มา : J2EE Performance tuning Tips, James McGovern, Publisher Java Developers Journal
No comments:
Post a Comment