บางครั้งแอปพลิเคชันบนเว็บของเราจะเร็วมากเมื่อทดสอบในเครื่อง แต่เมื่อทดสอบบน LAN จะพบปัญหาด้านประสิทธิภาพ บางครั้งแม้แต่แอปพลิเคชันที่มีความเร็วปกติบน LAN ก็อาจพบได้ในคำถาม WAN โดยทั่วไปปัญหาเหล่านี้เกิดจากความประมาทเลินเล่อหรือข้อผิดพลาดในแอปพลิเคชัน และไม่เกี่ยวข้องกับสถาปัตยกรรมระบบ ปัญหาสามารถพบได้และแก้ไขได้ด้วยการดีบักและการทดสอบในสภาพแวดล้อมจริง
สิ่งที่เรากำลังพูดถึงในวันนี้คือการปรับปรุงประสิทธิภาพของแอปพลิเคชัน ASP.Net โดยพื้นฐานโดยการปรับปรุงสถาปัตยกรรม
ขั้นแรกเรามาทดสอบแอปพลิเคชันง่ายๆ ของ ASP.Net กันก่อน
สภาพแวดล้อมการทดสอบ: AthlonXP 3200+, DDR400 512M, WindowsXP SP2, Native SQL Server 2000, ตารางผลิตภัณฑ์ของฐานข้อมูล Chinese Northwind (นำเข้าจาก Access) ประมาณ 70 รายการ
หมายเลขซีเรียลการทดสอบ | ประเภทโปรแกรม | วิธีทดสอบ | ผลการทดสอบ (คำขอต่อวินาที) | SQLServer ทรัพยากรครอบครอง | ASP.Net ทรัพยากรที่ถูกครอบครอง |
1 | บริการบนเว็บ | เติมชุดข้อมูลด้วยตารางผลิตภัณฑ์และส่งกลับจำนวนระเบียน | 250 เท่า | 100% | - |
2 | บริการบนเว็บ | เติมชุดข้อมูลด้วยตารางผลิตภัณฑ์และส่งกลับชุดข้อมูล | 138 เท่า | 54% | 46% |
3 | แอปพลิเคชันเว็บ | เติม ชุดข้อมูลที่มีตารางผลิตภัณฑ์และส่งกลับ Bind DataGrid | 70 คูณ | 28% | 72% |
ในการทดสอบครั้งแรก บริการเว็บจะอ่านระเบียนจากฐานข้อมูลเท่านั้น กรอกข้อมูลลงในชุดข้อมูล และส่งกลับจำนวนระเบียน (โปรดทราบว่าจะไม่ส่งคืนระเบียน) ใช้ทรัพยากรระบบน้อยมาก จะถือว่าระบบ ทรัพยากรถูกครอบครองโดย SQL Server และข้อสรุปไม่ชัดเจนจะมีผลกระทบด้านลบ
ในการทดสอบครั้งที่สอง เมื่อบริการเว็บส่งคืนชุดข้อมูล จำนวนคำขอต่อวินาทีจะลดลงเกือบครึ่งหนึ่งของทรัพยากรระบบจะถูกใช้โดย ASP.Net เพื่อทำให้ชุดข้อมูลเป็นอนุกรม
ในการทดสอบที่สาม โดยที่แอปพลิเคชันเว็บผูกชุดข้อมูลกับ DataGrid และส่งกลับเพจ จำนวนคำขอต่อวินาทีจะลดลงเกือบสามในสี่ ทรัพยากรระบบเหล่านี้ถูกใช้โดย ASP.Net เพื่อผูกชุดข้อมูลกับ DataGrid และส่งคืนเพจให้เป็นอนุกรม
จากการทดสอบข้างต้น เราจะเห็นว่าการเชื่อมโยงและการทำให้เป็นอนุกรมของ DataGrid จะใช้ทรัพยากรระบบจำนวนมาก หากคุณต้องการปรับปรุงประสิทธิภาพของระบบ คุณต้องปรับปรุงสถาปัตยกรรม
1. แยกการดำเนินการในฐานข้อมูลออกจากเพจ และวางไว้ในเลเยอร์การคงอยู่อิสระ
ด้วยวิธีนี้ ข้อมูลจะแสดงเป็นตารางผ่าน DOM หรือ XSLT บนฝั่งไคลเอ็นต์ แทนที่งานเชื่อมโยงของ DataGrid บนฝั่งเซิร์ฟเวอร์ ซึ่งช่วยลดแรงกดดันบนเซิร์ฟเวอร์ได้อย่างมาก และไคลเอนต์ได้รับข้อมูลจากเลเยอร์การคงอยู่ผ่าน AJAX ซึ่งจะปรับปรุงประสบการณ์ผู้ใช้
2. แยกเพจออกจากข้อมูลโดยสิ้นเชิงเพื่อให้สามารถใช้แคชได้
บางเพจที่ใช้ AJAX จะยังคงอ่านข้อมูลเริ่มต้น ดังนั้นจึงไม่สามารถแคชเพจได้ โดยทั่วไปเพจเหล่านี้จะซับซ้อนกว่าและใช้ทรัพยากรมากกว่าเพจทั่วไป หากสามารถใช้แคชได้ ประสิทธิภาพของระบบจะได้รับการปรับปรุงให้ดียิ่งขึ้น
ด้วยสองจุดข้างต้น ประสิทธิภาพของ ASP.Net จึงสามารถเพิ่มขึ้นได้เกือบสองเท่า
คุณสามารถทดสอบได้ด้วยตัวเอง หรือเยี่ยมชมตัวอย่างของเรา ที่ www.BizStruct.cn