เมื่อเปิดเพจ asp เพจจำเป็นต้องเข้าถึงฐานข้อมูล จากนั้นจึงแสดงเนื้อหาที่ตรงตามข้อกำหนดบนเพจ หากมีบันทึกจำนวนมากในฐานข้อมูล ความเร็วในการเข้าถึงเพจจะค่อนข้างช้า วิธีการต่อไปนี้สามารถใช้เพื่อปรับปรุงความเร็วในการเข้าถึงเพจได้
เคล็ดลับที่หนึ่ง: ปรับปรุงประสิทธิภาพของการใช้การรวบรวมคำขอ
การเข้าถึงคอลเลกชัน ASP เพื่อแยกค่าเป็นกระบวนการที่ใช้เวลานานและต้องใช้คอมพิวเตอร์มาก เนื่องจากการดำเนินการนี้เกี่ยวข้องกับชุดการค้นหาผ่านคอลเลกชันที่เกี่ยวข้อง จึงช้ากว่าการเข้าถึงตัวแปรภายในเครื่องมาก ดังนั้น หากคุณวางแผนที่จะใช้ค่าในคอลเลกชันคำขอหลายครั้งบนเพจ คุณควรพิจารณาจัดเก็บค่านั้นเป็นตัวแปรภายในเครื่อง
ตัวอย่างเช่น เขียนโค้ดในรูปแบบต่อไปนี้เพื่อเพิ่มความเร็วในการประมวลผลกลไกจัดการสคริปต์:
คัดลอกรหัสรหัสดังต่อไปนี้:
strTitle=Request.Form("หัวข้อ")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("นามสกุล")
ถ้า Len(strTitle) ดังนั้น strTitle=strTitle & " "
ถ้า strFirstName="" ดังนั้น strFullName=strTitle & " " & strLastName
เอลเซฟ เลน(strFirstName)=1 จากนั้น
strFullName=strTitle & strFirstName & ". " & strLastName
อื่น
strFullName=strTitle & strFirstName & " " & strLastName
สิ้นสุดถ้า
เคล็ดลับ 2: เข้าถึงคอลเลกชันที่เหมาะสมโดยตรง
หากคุณไม่มีทางเลือก อย่าใช้ strPage=Request("page") เพื่อรับพารามิเตอร์ เนื่องจากการดำเนินการนี้จะค้นหาคอลเลกชันทั้งหมดตามลำดับ - QueryString, Form, Cookies, ClientCertificate, ServerVarible จนกว่าจะพบรายการที่ตรงกันแรก ชื่อของ ค่า. การทำเช่นนี้มีประสิทธิภาพน้อยกว่าการเข้าถึงคอลเลกชันที่เหมาะสมโดยตรง และไม่ปลอดภัย เว้นแต่จะมีการรับประกันโดยสมบูรณ์ว่าค่าจะไม่ปรากฏในคอลเลกชันอื่น
ตัวอย่างเช่น คุณอาจต้องการค้นหาชื่อของเว็บเซิร์ฟเวอร์ที่ตอบสนองคำขอของลูกค้า ซึ่งทำได้โดยการค้นหา "SERVER_NAME" ในคอลเลกชัน Request.ServerVarables ที่ปรากฏในแต่ละแบบสอบถาม อย่างไรก็ตาม หากคอลเลกชันอื่นมีค่าชื่อ "SERVER_NAME" ด้วย (ชื่อคีย์ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) คุณจะได้รับผลลัพธ์ที่ไม่ถูกต้องเมื่อใช้ Request("server_Name") โดยสรุป ควรเข้าถึงคอลเลกชันที่เหมาะสมโดยตรงทุกครั้งที่เป็นไปได้
เคล็ดลับ 3: ใช้คุณสมบัติ Response.IsClientConnected ก่อนการดำเนินการที่ใช้เวลานาน
การใช้ Response.IsClientConnected เป็นวิธีที่มีประโยชน์ในการสังเกตว่าผู้ใช้ยังคงเชื่อมต่อกับเซิร์ฟเวอร์และโหลดหน้าเว็บที่สร้างโดย ASP หรือไม่ หากผู้ใช้ยกเลิกการเชื่อมต่อหรือหยุดดาวน์โหลด เราไม่ต้องเปลืองทรัพยากรเซิร์ฟเวอร์ในการสร้างหน้าเว็บอีกต่อไป เนื่องจากเนื้อหาบัฟเฟอร์จะถูกยกเลิกโดย IIS ดังนั้น สำหรับเพจที่ต้องใช้เวลามากในการคำนวณหรือใช้ทรัพยากรจำนวนมาก ควรตรวจสอบในทุกขั้นตอนว่าผู้เข้าชมออฟไลน์หรือไม่:
คัดลอกรหัสรหัสดังต่อไปนี้:
… โค้ดสำหรับสร้างส่วนแรกของเพจ
ถ้า Response.IsClientConnected แล้ว
การตอบสนองฟลัช
อื่น
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
… โค้ดสำหรับสร้างส่วนถัดไปของหน้า
เคล็ดลับ 4: ปรับการดำเนินการ ADO ให้เหมาะสมใน ASP
โดยทั่วไปแล้ว ข้อมูลถือเป็นเนื้อหาที่แท้จริงของเว็บไซต์ ดังนั้นจึงมีประโยชน์มากในการเพิ่มประสิทธิภาพการดำเนินการ ADO เพื่อเพิ่มความเร็วในการประมวลผลโค้ด ASP:
ก. เลือกเฉพาะคอลัมน์ที่ต้องการ: เมื่อเปิดชุดระเบียน ADO คุณไม่ควรใช้ชื่อตารางโดยอัตโนมัติ (เช่น SELECT *) เว้นแต่คุณจะต้องได้รับคอลัมน์ทั้งหมด การใช้คอลัมน์แยกกันจะทำให้ปริมาณข้อมูลที่ส่งหรือดึงมาจากเซิร์ฟเวอร์ลดลง แม้ว่าคุณจะจำเป็นต้องใช้คอลัมน์ทั้งหมด การตั้งชื่อแต่ละคอลัมน์แยกกันจะทำให้ได้ประสิทธิภาพที่ดีที่สุด เนื่องจากเซิร์ฟเวอร์ไม่จำเป็นต้องตีความชื่อคอลัมน์
ข. ใช้ขั้นตอนการจัดเก็บทุกครั้งที่เป็นไปได้ Stored Procedure คือโปรแกรมที่คอมไพล์แล้วซึ่งมีแผนการดำเนินการที่เตรียมไว้ ดังนั้นจึงดำเนินการได้เร็วกว่าคำสั่ง SQL
c. ใช้เคอร์เซอร์และรูปแบบการล็อคที่เหมาะสม หากสิ่งที่คุณทำคืออ่านข้อมูลจากชุดระเบียนและแสดงบนหน้าจอ ให้ใช้ชุดระเบียนแบบอ่านอย่างเดียวแบบส่งต่อเท่านั้นตามค่าเริ่มต้น ยิ่ง ADO ต้องทำเพื่อรักษารายละเอียดของบันทึกและการล็อคน้อยลงเท่าใด ประสิทธิภาพการทำงานก็ยิ่งสูงขึ้นเท่านั้น
ง. ใช้ตัวแปรวัตถุ วิธีที่แน่นอนในการปรับปรุงประสิทธิภาพเมื่อวนซ้ำชุดระเบียนคือการใช้ตัวแปรวัตถุเพื่อชี้ไปที่สมาชิกของคอลเลกชัน ตัวอย่างเช่น:
คัดลอกรหัสรหัสดังต่อไปนี้:
แม้ว่าจะไม่ใช่ RsGc.EOF
การตอบสนองเขียน "ชื่อโครงการ:" & RsGc("GcMC") & "(รหัสโครงการ:" & RsGc("GcCode") & ")"
RsGc.MoveNext
เวนด์
ซึ่งสามารถเขียนใหม่เป็นโค้ดต่อไปนี้เพื่อเร่งการดำเนินการ:
คัดลอกรหัสรหัสดังต่อไปนี้:
ตั้งค่า GcMc=RsGc("GcMc")
ตั้ง GcCode=RsGc("GcCode")
ในขณะที่ไม่ใช่ rsGc.EOF Response.Write "ชื่อโครงการ:" & GcMc & "(รหัสโครงการ: " & GcCode & ")"
RsGc.MoveNext
เวนด์
รหัสใหม่สร้างการอ้างอิงถึงตัวแปรอ็อบเจ็กต์ ดังนั้นตัวแปรอ็อบเจ็กต์สามารถใช้แทนตัวแปรจริงได้ ซึ่งหมายความว่ากลไกสคริปต์มีงานที่ต้องทำน้อยลงเนื่องจากมีดัชนีในคอลเลกชันน้อยลง
เคล็ดลับ 5: อย่าผสมเอ็นจิ้นสคริปต์
เรารู้ว่าทั้ง VBScript และ JScript สามารถใช้ในหน้า ASP ได้ แต่ไม่แนะนำให้ใช้ JScript และ VBScript พร้อมกันในหน้าเดียวกัน เนื่องจากเซิร์ฟเวอร์ต้องสร้างอินสแตนซ์และพยายามแคชเอ็นจิ้นสคริปต์สองตัว (แทนที่จะเป็นหนึ่งตัว) สิ่งนี้จะเพิ่มภาระบนระบบในระดับหนึ่ง ดังนั้น เพื่อเหตุผลด้านประสิทธิภาพ คุณไม่ควรผสมเอ็นจิ้นสคริปต์หลายตัวในหน้าเดียวกัน