Wednesday 5 September 2007

วันก่อนเขียนเรื่องการ tuning javascript มีคนมาถามผมว่าเราจะมีการเพิ่ม performance ให้กับ JSP อย่างไรผมเลยเอา trick นี้มาฝากครับ

  1. ใช้ HttpSession.invalidate() เพื่อที่จะใช้ clean session เนื่องจากว่าบางครั้ง session ที่เราจองไว้นั้นถ้าหากไม่มีการใช้นานๆ ก็จะเปลืองหน่วยความจำ ดังนั้นเราจึงควรที่จะ clean session ที่ไม่ได้ใช้คืนหน่วยความจำ

  2. ในหน้าของ JSP ใดที่ไม่มีการใช้ session เพื่อเป็นการประหยัดทรัพยากรของเครื่อง Application Server เราจึงควรที่จะบอกมันไว้ว่า เราไม่มีการใช้ session ในหน้า page นี้โดยการใช้

  3. ให้เรา Implement HttpSessionBindingListener สำหรับ bean ทุกตัวที่มี scope อยู่ใน session เพื่อที่จะให้ bean นั้น สามารถคืนทรัพยากรให้กับระบบได้โดยการใช้ method valueUnbound() เมื่อไม่มีการใช้ bean นั้นแล้ว

  4. เราควรที่จะตั้งค่า session timeout ให้เร็วขึ้น เพื่อที่จะได้คืนทรัพยากรให้กับระบบได้เร็วขึ้น เราจะตั้งค่านี้ผ่าน method session.setMaxInactiveInterval() ส่วนค่าที่เหมาะสมควรเป็นเท่าใด นักพัฒนาที่คลุกคลีกับระบบนั้น ๆ น่าจะเป็นคนที่รู้ดีที่สุด
  5. ให้พยายามใช้ที่จะใช้ include directive เช่น <%@ include file="header.html" %>ในทุกที่ที่เป็นไปได้ เพราะมันจะทำงานตอน compile time แต่ถ้าใช้ jsp:include จะทำงานตอน run time ครับ

  6. พยายามใช้ cache tagging ในทุกที่ที่เป็นไปได้ครับ cache tagging จะทำหน้าที่เก็บ tag ที่ compile จาก JSP file เสร็จแล้ว เมื่อมีการเรียกใช้ในส่วนนั้นก็ไม่ต้อง compile ใหม่ สามารถดึงมาจาก cache นำไปใช้งานได้เลย
  7. ซึ่งการที่จะ 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 ลง deployment descripter ใน file /WEB-INF/web.xml ของ Application ของคุณดังนี้


<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: