ใช้ Response.Buffer=True เพื่อเร่งความเร็วโปรแกรม เนื้อหาของ Response.Flush() ต้องมีอย่างน้อย 256 ไบต์
สำหรับ i=1 ถึง 256
yongfa365=yongfa365&<!--จุดประสงค์หลักที่นี่คือเพื่อให้ส่วนหน้าสร้างอักขระ 256 ตัวก่อน เพื่อให้สามารถส่งออกแบบเรียลไทม์-->
ถ้า len(yongfa365)>=256 ให้ออกเพื่อ
ต่อไป
ทำพื้นฐาน()
ทำรุ่น()
MadeIndexBlogItem()
ตอบกลับเขียน 1/6 เทมเพลตทั้งหมดถูกสร้างขึ้น<br>&yongfa365
การตอบสนองฟลัช()
MadeIndex (ปฏิทิน)
การตอบสนองเขียน 2/6วันที่สร้างดัชนีเสร็จสมบูรณ์<br>
การตอบสนองฟลัช()
MadeIndex(หมวดหมู่)
การตอบสนองเขียน 3/6 การสร้างดัชนีการจำแนกประเภทเสร็จสมบูรณ์<br>
การตอบสนองฟลัช()
MadeIndex(บล็อก)
การตอบสนองเขียน 4/6 การสร้างดัชนีทั้งหมดเสร็จสมบูรณ์<br>
การตอบสนองฟลัช()
ทำ RSS()
การตอบสนองเขียนการสร้าง RSS 5/6 เสร็จสมบูรณ์<br>
การตอบสนองฟลัช()
MadeItem(ทั้งหมด)
ตอบกลับเขียน 6/6 บทความทั้งหมดถูกสร้างขึ้น <font color=red>ตกลง เสร็จสมบูรณ์ในที่สุด</red>
การตอบสนองฟลัช()
ด้านบนคือโค้ดส่วนหนึ่งที่สร้างไฟล์สแตติกในพื้นหลังแบบไดนามิก จุดประสงค์คือเพื่อให้คุณเห็นว่าโปรแกรมกำลังทำงานอยู่ที่ใด ก่อนที่ฉันจะไม่เพิ่ม Response.Flush() ฉันแค่ดูที่แถบความคืบหน้า ในแถบสถานะ IE รู้สึกหดหู่ใจมาก การเพิ่มการตอบสนองหลังจาก .Flush() ฉันรู้สึกดีมาก นี่คือชุดของเอกสารอ้างอิงบางส่วนที่พบในอินเทอร์เน็ต:
ฉันไม่รู้ว่าทุกคนรู้เกี่ยวกับ Buffer มากแค่ไหน หลายคนคลุมเครือเกี่ยวกับแนวคิดนี้ โดยเฉพาะใน ASP ผู้เริ่มต้นหลายคนไม่ค่อยใช้คำสั่งนี้ในการเขียนโปรแกรม asp ให้ฉันพูดถึงวัตถุประสงค์ของ Buffer และบทบาทของมันในโปรแกรม asp
1. บัฟเฟอร์
Buffer แปลจากภาษาอังกฤษว่า Buffer Zone ในที่นี้เราเรียกมันว่า Buffer เพราะไม่ใช่แค่คำนามเท่านั้น แต่ยังเป็นคำกริยาด้วย
บัฟเฟอร์เป็นสถานที่ที่ชุดข้อมูลถูกจัดเก็บ ข้อมูลที่ได้รับจากไคลเอ็นต์สามารถส่งออกได้โดยตรงจากผลการดำเนินการของโปรแกรมหรือเอาต์พุตจากบัฟเฟอร์ แต่มีความแตกต่างด้านความเร็วระหว่างสองวิธีนี้: ในเว็บ เมื่อไม่มีการร้องขอโปรแกรม ASP หลายครั้ง โดยพื้นฐานแล้วไม่มีความแตกต่างระหว่างทั้งสอง อย่างน้อยเราก็ไม่รู้สึก แต่เมื่อมีคนขอโปรแกรม asp จำนวนมาก ความเร็วก็ต่างกัน หากไม่มีบัฟเฟอร์ ผลลัพธ์ที่ได้รับจากไคลเอนต์แต่ละรายที่ร้องขอโปรแกรม ASP คือผลลัพธ์ที่ได้รับจากการรันโปรแกรม ASP หนึ่งครั้ง หากโปรแกรม ASP ถูกบัฟเฟอร์ล่วงหน้า ผลลัพธ์ที่ได้รับจากไคลเอนต์แต่ละรายจะเป็นผลลัพธ์ที่ถูกบัฟเฟอร์ ผลลัพธ์ของพื้นที่ไม่ใช่ผลลัพธ์ของการรันโปรแกรมเพียงครั้งเดียว ตัวอย่างเช่น ผู้ใช้ 1,000 รายเข้าถึงเพจ ASP ในเวลาเดียวกัน หากโปรแกรม ASP ไม่ได้รับการบัฟเฟอร์ โปรแกรมจะถูกดำเนินการนับพันครั้ง ซึ่งจะเพิ่มภาระบนเซิร์ฟเวอร์ และทำให้ไคลเอนต์เปิดเพจช้าลง โปรแกรม ASP ถูกบัฟเฟอร์ ดังนั้นผลลัพธ์จะแตกต่างกัน ไคลเอนต์แต่ละรายได้รับข้อมูลโดยตรงจากบัฟเฟอร์ และเซิร์ฟเวอร์จะไม่เพิ่มจำนวนการดำเนินการของโปรแกรมเนื่องจากการเข้าถึงที่เพิ่มขึ้น ดังนั้นความเร็วที่ไคลเอนต์เปิดเพจจะเป็น ช้ากว่ากรณีก่อนหน้าอย่างรวดเร็ว นี่คือประโยชน์ของบัฟเฟอร์
2. วิธีบัฟเฟอร์โปรแกรม asp
ปัญหานี้ง่ายมาก เพียงเพิ่ม: ในบรรทัดแรกของโปรแกรม asp:
<% การตอบสนองบัฟเฟอร์ = จริง %>
แค่นั้นแหละ.
ความหมายของประโยคนี้คือการระบุว่าหน้าผลลัพธ์ถูกบัฟเฟอร์หรือไม่ เมื่อค่าแอตทริบิวต์เป็น True เซิร์ฟเวอร์จะไม่ส่งข้อมูลใด ๆ ไปยังไคลเอนต์จนกว่าโปรแกรมทั้งหมดจะถูกดำเนินการหรือพบ
<% การตอบสนองฟลัช %> หรือ <% การตอบสนองสิ้นสุด %>
คำสั่งเพื่อเปิดเผยข้อมูลบัฟเฟอร์
การใช้ Response.Buffer=True และ Response.Flush สามารถเพิ่มความเร็วในการเรียกดูได้ หากเพจมี Response.Buffer=False จะมีการถ่ายโอนข้อมูล 30 ครั้ง หากมีผู้เรียกดูหน้านี้ 100 คน จะมีจำนวน 3,000 คน การส่งข้อมูลไปกลับส่งผลต่อประสิทธิภาพอย่างมาก หากคุณตั้งค่า Response.Buffer=True ที่จุดเริ่มต้น ให้แบ่งทั้งหน้าออกเป็นหลายกลุ่ม และใช้ Response.Flush ในตำแหน่งที่เหมาะสม ประสบการณ์ของผู้เยี่ยมชมจะดีขึ้นอย่างมาก
3.ทำไมบางครั้งฉันรู้สึกไร้ประโยชน์
ตัวอย่างเช่น:
-
'คำเตือน: อย่าเรียกใช้สิ่งนี้หากคุณไม่มีอะไรทำ
สำหรับ i=1 ถึง 10,000
Response.Write <b><center><font color=#FF0000>ฉันชื่อ www.yongfa365.com&i&</font></center></b>
การตอบสนองฟลัช
การตอบสนอง.ชัดเจน
ต่อไป
-
คงใช้เวลานานกว่าจะออกมา และจะมีออกมาเป็นมัดๆ แล้วค่อยออกมาทีละคน
เหตุผล:
การตอบสนองฟลัช() เขาจะส่งข้อมูลที่คอมไพล์แล้วในบัฟเฟอร์ไปยังไคลเอนต์ก่อน
แต่
เนื้อหาของฟลัชต้องมีขนาดอย่างน้อย 256 ไบต์ กล่าวคือ เฉพาะในกรณีที่การคอมไพล์สร้างข้อมูลอย่างน้อย 256 ไบต์ ข้อมูลจึงสามารถส่งไปยังไคลเอนต์และแสดงได้หลังจากดำเนินการ Response.Flush()
วิธีการที่ชัดเจน
วิธีการล้างลบเอาท์พุท HTML ทั้งหมดในบัฟเฟอร์ วิธีการล้างจะลบเนื้อหาการตอบกลับเท่านั้น แต่จะลบส่วนหัวการตอบกลับไม่ได้
ไวยากรณ์
การตอบสนองชัดเจน
ความคิดเห็น
Calling Response.Clear จะล้างเอาต์พุตข้อมูลในส่วนก่อนหน้าของหน้านี้ ในเวลาเดียวกัน หากโปรแกรมตั้งค่า Response.ContentEncoding แล้ว Response.Clear จะตั้งค่าวิธีการเข้ารหัสเป็นการส่งโดยตรงด้วย
นำไปใช้กับวัตถุการตอบสนอง
4. สรุป
แม้ว่าแอตทริบิวต์บัฟเฟอร์ของการตอบกลับสามารถปรับปรุงความเร็วในการแสดงเพจได้ แต่ก็ขึ้นอยู่กับสถานการณ์ หากคุณกำลังสร้างหน้าแรกส่วนตัวแบบธรรมดา จำนวนการเข้าชมไม่สูงมาก และไม่มีโปรแกรมดำเนินการที่ซับซ้อน ดังนั้นการใช้คุณลักษณะนี้จึงไม่สำคัญมากนัก เนื่องจากจะใช้เวลาสักครู่ในการบัฟเฟอร์ข้อมูล แต่ เราไม่รู้สึกเลย แต่ถ้าคุณกำลังสร้างฟอรัมขนาดใหญ่ หรือแสดงผลิตภัณฑ์ หรือไซต์ธุรกิจอื่นๆ และมีการเข้าชมสูงมาก ฉันขอแนะนำให้เพิ่มประโยค <% Response.Buffer = True %> ไว้ข้างหน้า ของโปรแกรมเพราะสิ่งนี้จะช่วยให้ลูกค้าได้รับข้อมูลมากขึ้นในเวลาที่มีประสิทธิภาพ
ที่แนบมา:
โดยทั่วไปจะมีสิ่งนี้อยู่ในส่วนหัวของไฟล์ในรหัสยืนยัน
Response.Buffer=เท็จ
การตอบกลับหมดอายุ=0
Response.ExpiresAbsolute = ตอนนี้() - 1
Response.AddHeader Pragma ไม่มีแคช
Response.AddHeader การควบคุมแคชส่วนตัว
Response.CacheControl = ไม่มีแคช
เพียงเพื่อป้องกันไม่ให้ถูกแคช