เคล็ดลับที่หนึ่ง: ปรับปรุงประสิทธิภาพของการใช้คอลเลกชันคำขอ
การเข้าถึงคอลเลกชัน ASP เพื่อแยกค่าเป็นกระบวนการที่ใช้เวลานานและต้องใช้ทรัพยากรในการคำนวณมาก เนื่องจากการดำเนินการนี้เกี่ยวข้องกับชุดการค้นหาผ่านคอลเลกชันที่เกี่ยวข้อง จึงช้ากว่าการเข้าถึงตัวแปรภายในเครื่องมาก ดังนั้น หากคุณวางแผนที่จะใช้ค่าในคอลเลกชันคำขอหลายครั้งบนเพจ คุณควรพิจารณาจัดเก็บค่านั้นเป็นตัวแปรภายในเครื่อง ตัวอย่างเช่น เขียนโค้ดในรูปแบบต่อไปนี้เพื่อเร่งการประมวลผลกลไกจัดการสคริปต์:
strTitle=Request.Form("Title")
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
??ค. ใช้เคอร์เซอร์และรูปแบบการล็อคที่เหมาะสม หากสิ่งที่คุณทำคืออ่านข้อมูลจากชุดระเบียนและแสดงบนหน้าจอ ให้ใช้ชุดระเบียนแบบอ่านอย่างเดียวที่เป็นค่าเริ่มต้นแบบส่งต่ออย่างเดียว ยิ่ง ADO ต้องทำงานน้อยลงเพื่อรักษารายละเอียดของบันทึกและการล็อค ประสิทธิภาพการทำงานก็จะยิ่งสูงขึ้นเท่านั้น
??ง. ใช้ตัวแปรวัตถุ วิธีที่แน่นอนในการปรับปรุงประสิทธิภาพเมื่อวนซ้ำชุดระเบียนคือการใช้ตัวแปรวัตถุเพื่อชี้ไปที่สมาชิกของคอลเลกชัน ตัวอย่างเช่น:
ในขณะที่ไม่ใช่ RsGc.EOF
การตอบสนองเขียน "ชื่อโครงการ:" & RsGc("GcMC") & "(รหัสโครงการ: " & RsGc("GcCode") & ")
-
RsGc.MoveNext
Wend
สามารถเขียนใหม่เป็นโค้ดต่อไปนี้เพื่อเร่งการดำเนินการ:
set GcMc=RsGc("GcMc")
ตั้ง GcCode=RsGc("GcCode")
ในขณะที่ไม่ใช่ rsGc.EOF Response.Write "ชื่อโครงการ: " & GcMc & " (รหัสโครงการ: " & GcCode & ")
" RsGc.MoveNext
Wend
?? รหัสใหม่สร้างการอ้างอิงถึงตัวแปรอ็อบเจ็กต์ ดังนั้นตัวแปรอ็อบเจ็กต์สามารถใช้แทนตัวแปรจริงได้ ซึ่งหมายความว่าเอ็นจิ้นสคริปต์มีงานน้อยลงเนื่องจากมีดัชนีน้อยลงในคอลเลกชัน
??เคล็ดลับที่ 5: อย่าผสมเอ็นจิ้นสคริปต์
??เรารู้ว่าทั้ง VBScript และ JScript สามารถใช้ในหน้า ASP ได้ แต่ไม่แนะนำให้ใช้ JScript และ VBScript พร้อมกันในหน้าเดียวกัน เนื่องจากเซิร์ฟเวอร์ต้องสร้างอินสแตนซ์และพยายามแคชเอ็นจิ้นสคริปต์สองตัว (แทนที่จะเป็นหนึ่งตัว) สิ่งนี้จะเพิ่มภาระบนระบบในระดับหนึ่ง ดังนั้น เพื่อเหตุผลด้านประสิทธิภาพ คุณไม่ควรผสมเอ็นจิ้นสคริปต์หลายตัวในหน้าเดียวกัน