1. ภาพรวม
ในแอปพลิเคชันบนเว็บ การสร้างรายงานบางฉบับอาจใช้เวลานานในการคำนวณ บางเว็บไซต์ให้ข้อมูลสภาพอากาศ ซึ่งจำเป็นต้องเข้าถึงเซิร์ฟเวอร์ระยะไกลเพื่อทำการเรียก SOAP เพื่อรับข้อมูลอุณหภูมิ ทั้งหมดนี้เป็นตัวอย่างข้อมูลที่ซับซ้อน การเพิ่มข้อมูลที่ซับซ้อนมากเกินไปลงในเว็บเพจอาจทำให้เว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ฐานข้อมูลโอเวอร์โหลด jsp (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กร SUN) (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กร SUN) การบัฟเฟอร์บล็อกโค้ดทำให้นักพัฒนามีอิสระในการเพิ่มข้อมูลที่ซับซ้อนต่างๆ ตามต้องการ
jsp (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กร SUN) (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กร SUN) สามารถสรุปและรันโค้ด Java ที่ซับซ้อนในไลบรารีแท็ก ซึ่งทำให้ jsp (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กร SUN) (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กรของ SUN) หน้า ไฟล์จะง่ายต่อการดูแลรักษา ทำให้สะดวกยิ่งขึ้นสำหรับนักพัฒนาที่ไม่เป็นมืออาชีพในการใช้ jsp (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กรของ SUN) (ตัวเลือกแรกสำหรับองค์กร SUN- แอปพลิเคชันระดับ) ไฟล์หน้า มีไลบรารีแท็กจำนวนมากอยู่แล้ว ซึ่งเป็นผลิตภัณฑ์เชิงพาณิชย์หรือผลิตภัณฑ์โอเพ่นซอร์ส แต่ผลิตภัณฑ์เหล่านี้ส่วนใหญ่ใช้เฉพาะแท็กไลบรารีเพื่อใช้งานฟังก์ชันที่สามารถนำมาใช้กับ Java Scriptlet แบบธรรมดา มีผลิตภัณฑ์เพียงไม่กี่รายการที่ใช้แท็กที่กำหนดเองในวิธีที่สร้างสรรค์เพื่อจัดเตรียม jsp (แอปพลิเคชันระดับองค์กร SUN) ตัวเลือกแรก) (ตัวเลือกแรกสำหรับ แอปพลิเคชันระดับองค์กร SUN) ไลบรารีแท็กแบบกำหนดเองแทบจะเป็นไปไม่ได้เลยที่จะบรรลุมาก่อน
ไลบรารีแท็ก OSCache ได้รับการออกแบบโดย OpenSymphony ซึ่งเป็นแอปพลิเคชันแท็กที่กำหนดเอง jsp (ตัวเลือกแรกของแอปพลิเคชันระดับองค์กร SUN) สุดล้ำ (ตัวเลือกแรกของแอปพลิเคชันระดับองค์กร SUN) ที่ให้ความสามารถในการใช้ jsp ที่มีอยู่ (แอปพลิเคชันระดับองค์กร SUN เป็นอันดับแรก ตัวเลือก) (ตัวเลือกแรกสำหรับแอปพลิเคชันระดับองค์กร SUN) ตระหนักถึงการทำงานของการบัฟเฟอร์หน่วยความจำที่รวดเร็วภายในเพจ แม้ว่าจะมีผู้จำหน่ายบางรายที่เสนอผลิตภัณฑ์แคชในรูปแบบต่างๆ แต่ก็เป็นผลิตภัณฑ์เฉพาะของผู้จำหน่ายทั้งหมด OSCache สามารถทำงานบนเซิร์ฟเวอร์ที่รองรับ jsp (ตัวเลือกแรกของแอปพลิเคชันระดับองค์กร SUN) ใด ๆ (ตัวเลือกแรกของแอปพลิเคชันระดับองค์กร SUN) 1.1 ไม่เพียงแต่สามารถแคช jsp ที่มีอยู่เท่านั้น (ตัวเลือกแรกของแอปพลิเคชันระดับองค์กร SUN) (แอปพลิเคชันระดับองค์กร SUN ) สำหรับผู้ใช้ทุกคน ตัวเลือกแรกสำหรับแอปพลิเคชัน) บล็อกโค้ด และสามารถบัฟเฟอร์ได้สำหรับผู้ใช้แต่ละราย OSCache ยังมีคุณสมบัติขั้นสูงบางประการเพื่อปรับปรุงความสามารถในการปรับขนาด เช่น การบัฟเฟอร์ไปยังดิสก์ การล้างบัฟเฟอร์ที่ตั้งโปรแกรมได้ การควบคุมข้อยกเว้น ฯลฯ นอกจากนี้ เช่นเดียวกับผลิตภัณฑ์ OpenSymphony อื่นๆ โค้ดของ OSCache ได้รับการเผยแพร่อย่างเสรีภายใต้ใบอนุญาตโอเพ่นซอร์ส
บทความนี้ใช้กระบวนการออกแบบเว็บไซต์การประมูลในจินตนาการเป็นตัวอย่างเพื่อแนะนำกระบวนการทำงานของ OSCache เว็บไซต์ในจินตนาการนี้จะประกอบด้วย: หน้าการจัดการที่รายงานกิจกรรมการประมูลล่าสุด หน้าแรกที่ใช้งานได้เต็มรูปแบบพร้อมข้อมูลส่งเสริมการขายต่างๆ และแถบนำทางพิเศษที่มีข้อมูลเกี่ยวกับกิจกรรมการประมูลที่ยังไม่ยุติทั้งหมดของผู้ใช้
2. หน้าการจัดการ
เว็บไซต์การประมูลประกอบด้วยรายงานการจัดการ และเซิร์ฟเวอร์ฐานข้อมูลจะใช้เวลาหลายวินาทีในการสร้างรายงานดังกล่าว สิ่งสำคัญคือการสร้างรายงานจะใช้เวลานานในการสร้าง เนื่องจากเราอาจมีผู้ดูแลระบบหลายคนคอยติดตามการทำงานของระบบ และเราต้องการหลีกเลี่ยงการสร้างรายงานใหม่ทุกครั้งที่ผู้ดูแลระบบเยี่ยมชม เพื่อให้บรรลุเป้าหมายนี้ เราจะสรุปทั้งหน้าไว้ในแท็กบัฟเฟอร์ระดับแอปพลิเคชันซึ่งจะรีเฟรชทุกชั่วโมง ผลิตภัณฑ์บางอย่างจากผู้ขายรายอื่นมีฟังก์ชันการทำงานที่คล้ายคลึงกัน เพียงแต่ OSCache ทำได้ดีกว่าพวกเขาเท่านั้น
เพื่อความเรียบง่าย เราจะไม่เน้นไปที่ปัญหาการจัดรูปแบบมากเกินไป เมื่อเขียนหน้าการจัดการ ก่อนอื่นเราจะเพิ่มการประกาศไลบรารีแท็กลงในหน้า:
<%@ taglib uri="cachetags" prefix="cache" %>
ต่อไปเราต้องล้อมรอบทั้งหน้าด้วยแท็กแคช เวลาแคชเริ่มต้นสำหรับแท็กแคชคือ 1 ชั่วโมง
<cache:cache> .... รายงานการจัดการที่ซับซ้อน.... </cache:cache>
ขณะนี้หน้าการจัดการถูกแคชไว้แล้ว หากผู้ดูแลระบบเข้าถึงเพจเดิมอีกครั้งภายในหนึ่งชั่วโมงหลังจากสร้างเพจ เขาจะเห็นเพจที่แคชไว้ก่อนหน้านี้ และเซิร์ฟเวอร์ฐานข้อมูลไม่จำเป็นต้องสร้างรายงานนี้อีกครั้ง
3. หน้าแรก
หน้าแรกของเว็บไซต์การประมูลจะแสดงกิจกรรมของเว็บไซต์และส่งเสริมการประมูลที่กำลังจะสิ้นสุด เราต้องการแสดงจำนวนการประมูลที่กำลังดำเนินอยู่ จำนวนผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน รายการการประมูลที่จะสิ้นสุดในอนาคตอันใกล้นี้ และเวลาปัจจุบัน ข้อความเหล่านี้มีข้อกำหนดด้านความแม่นยำของเวลาที่แตกต่างกัน โดยปกติการประมูลบนเว็บไซต์จะใช้เวลาหลายวัน ดังนั้นเราจึงสามารถตั้งเวลาเพื่อบัฟเฟอร์จำนวนการประมูลที่ถูกต้องไว้ที่ 6 ชั่วโมง จำนวนผู้ใช้จะเปลี่ยนแปลงบ่อยขึ้นอย่างเห็นได้ชัด แต่ที่นี่เราจะบัฟเฟอร์ค่านี้ครั้งละ 15 นาที สุดท้ายนี้ เราต้องการให้เวลาปัจจุบันที่แสดงบนเพจเป็นเวลาที่แน่นอนที่มีการเข้าถึงเพจเสมอ
หลังจากประกาศไลบรารีแท็กในหน้าแรกแล้ว ขั้นแรกเราจะส่งออกวันที่ปัจจุบันโดยตรงโดยไม่มีการบัฟเฟอร์:
ตอนนี้คือ: <%=new java.util.Date()%>
ต่อไป เราต้องการแสดงรายการวันที่ที่จะประมูล ที่ลงท้ายในระยะสั้น:
<cache:cache> <ul>< <% // สร้าง Iterator ที่มีการประมูลล่าสุด Iterator การประมูล = .... while (auctions.hasMore()) { Auction Auction = (Auction) การประมูล .next(); %><li><%=ประมูล%></li%< } %> </ul>< </cache:cache>