1. ASP caching คืออะไร/เหตุใดจึงควรแคช?
เมื่อเว็บไซต์ของคุณถูกสร้างขึ้นโดยใช้เทคโนโลยี ASP ในระยะแรก คุณอาจรู้สึกถึงความสะดวกสบายที่มาจากเทคโนโลยีเว็บเพจไดนามิกของ ASP เช่นเดียวกับอิสระในการปรับเปลี่ยนและการควบคุม http ฟรี อย่างไรก็ตาม เมื่อจำนวนการเข้าชมเพิ่มขึ้น คุณจะพบว่าความเร็วในการเข้าถึงไซต์ของคุณช้าลงเรื่อยๆ และ IIS จะรีสตาร์ทบ่อยขึ้นเรื่อยๆ ถัดไป คุณต้องต้องการปรับ asp ให้เหมาะสม เช่น การแทนที่ฐานข้อมูลด้วยประสิทธิภาพที่ดีขึ้น การสร้างดัชนี การเขียนขั้นตอนการจัดเก็บ เป็นต้น มาตรการบางอย่างเหล่านี้ไม่ต้องการแรงกดดันด้านต้นทุนที่เพิ่มขึ้น ในขณะที่มาตรการอื่นๆ ต้องการแรงกดดันด้านต้นทุนที่มีนัยสำคัญ (เช่น การเข้าถึง SQL แบบคลัสเตอร์) และผลที่ได้ก็อาจไม่แน่นอนเสมอไป
เมื่อต้องเผชิญกับแรงกดดันในการเข้าถึงเว็บ ฉันคิดว่าวิธีที่ประหยัดที่สุดคือการใช้เทคโนโลยีเพิ่มประสิทธิภาพแคชเพื่อบรรเทาความกดดันในการให้บริการเว็บ
การเข้าชมเว็บที่เพิ่มขึ้นมักหมายถึงการเติบโตอย่างรวดเร็วของความต้องการทรัพยากรต่อไปนี้:
1. การเพิ่มขึ้นของการรับส่งข้อมูลการ์ดเครือข่ายต้องใช้ CPU มากขึ้นเพื่อประมวลผลการรับส่งข้อมูลเครือข่ายและเธรด I/O เครือข่าย
2. ความจำเป็นในการเปิด/ปิดการเชื่อมต่อฐานข้อมูลบ่อยขึ้น (หากใช้เทคโนโลยีฐานข้อมูล - โดยปกติ ASP จะใช้ฐานข้อมูลเป็นที่จัดเก็บข้อมูล) จำนวนสิ่งที่ใช้ทรัพยากรอย่างจริงจัง และการหยุดชะงักที่เกิดจากธุรกรรมที่แข่งขันกันเพื่อแย่งชิงทรัพยากรจะเพิ่มเครือข่าย I/ O หรือปริมาณการใช้ CPU
3. หากใช้เซสชัน IIS จะใช้หน่วยความจำมากขึ้นเพื่อรักษาสถานะ และการใช้หน่วยความจำอาจทำให้หน่วยความจำกายภาพไม่เพียงพอ ทำให้เกิดการแลกเปลี่ยนบ่อยครั้งระหว่างหน่วยความจำกายภาพและหน่วยความจำเสริม ทำให้การเรียกใช้โค้ดหยุดชั่วคราวและการตอบสนองของเว็บถูกบล็อก .
4. เนื่องจากขาดการตอบสนองในการเข้าถึงอย่างทันท่วงที จะทำให้การเข้าถึงหน้าเว็บล้มเหลว ทำให้ผู้ใช้รีเฟรช ส่งผลให้ความต้องการทรัพยากร เช่น CPU และหน่วยความจำรุนแรงขึ้น
ในความเป็นจริง เมื่อพิจารณาถึงเว็บแอปพลิเคชันทั่วไป หลายครั้งที่การเรียกใช้โค้ดแบบไดนามิกนั้นไม่จำเป็น
2. การจำแนกประเภทของแคช asp
หากต้องการสรุปโดยไม่ได้รับอนุญาต แคช asp สามารถแบ่งออกเป็นสองประเภท:
1. ไฟล์แคช
สิ่งที่เรียกว่าการแคชไฟล์นั้นขึ้นอยู่กับการตัดสินเชิงตรรกะว่าการดำเนินการเฉพาะของ ASP บางตัวจะไม่เปลี่ยนแปลงอย่างมีนัยสำคัญภายในระยะเวลาหนึ่ง ดังนั้นเนื้อหาจะถูกจัดเก็บในรูปแบบของ HTML แบบคงที่ จากนั้นเทคโนโลยีการเปลี่ยนเส้นทางเว็บจะถูกใช้เพื่อ อนุญาตให้ไคลเอนต์เข้าถึงไฟล์คงที่ เพื่อตอบสนองความต้องการในการลด CPU ทรัพยากรฐานข้อมูล ฯลฯ มีแอปพลิเคชันดังกล่าวอยู่มากมาย ตัวอย่างเช่น ฟอรัมหลายแห่งจะสร้างโพสต์ทั้งหมดใหม่เป็นไฟล์คงที่เมื่อตอบกลับโพสต์ จากนั้นจึงเปลี่ยนเส้นทาง เช่น ฟอรัม donews.com นอกจากนี้ยังมีผลข้างเคียง (ประโยชน์) ของการเป็นแบบคงที่ - เครื่องมือค้นหาเช่น Google สามารถรวมไว้ได้อย่างง่ายดาย ระบบข่าวประชาสัมพันธ์บางระบบได้นำเทคโนโลยีนี้ไปใช้
2. แคชส่วนไฟล์
สิ่งที่เรียกว่าแคชของไฟล์นั้นขึ้นอยู่กับการตัดสินใจเชิงตรรกะด้วย ส่วนหนึ่งของข้อมูล (โดยปกติจะได้รับจากการสืบค้นฐานข้อมูลความจุขนาดใหญ่ที่ต้องใช้ทรัพยากร) จะไม่เปลี่ยนแปลงภายในระยะเวลาหนึ่ง ดังนั้นเราจึงสามารถจัดเก็บข้อมูลเหล่านี้ไว้ใน รูปแบบของไฟล์ เมื่อจำเป็น สามารถรับข้อมูลได้โดยการอ่านไฟล์เพื่อหลีกเลี่ยงการเพิ่มภาระให้กับฐานข้อมูล ตัวอย่างเช่น เรามักจะเก็บข้อมูลบางอย่างในรูปแบบ XML แล้วจึงนำไปใช้ นี่คือวิธีการจัดการฟอรัม CSDN
3. แคชหน่วยความจำหลัก
นอกจากนี้คุณยังสามารถพิจารณาการแคชในหน่วยความจำ การจัดเก็บเนื้อหาที่ต้องการการตอบสนองอย่างทันท่วงทีในหน่วยความจำ และเคลื่อนย้ายเนื้อหาจากที่จัดเก็บข้อมูลที่รวดเร็วทันทีเมื่อจำเป็นต้องเข้าถึง หากข้อกำหนดในการเข้าถึงจำนวนมากมุ่งเน้นไปที่เพจเล็กๆ สองสามหน้า หรือหากหน่วยความจำหลักมีขนาดใหญ่เพียงพอ ฉันคิดว่าการใช้การแคชหน่วยความจำหลักสามารถปรับปรุงประสิทธิภาพการเข้าถึงเว็บได้อย่างมาก
3. วิธีการนำไปใช้/ใช้งานแคช
จำเป็นต้องพิจารณาประเด็นต่อไปนี้เมื่อใช้แคช:
1. หน้าใดจะไม่เปลี่ยนแปลงในช่วงเวลาอันสั้น?
วิเคราะห์ไซต์ของคุณเองมีหลายหน้าเช่นนี้ ตัวอย่างเช่น เว็บไซต์มักจะมีคอลัมน์ข่าวสารและข้อมูล โดยปกติผู้ดูแลเว็บไซต์จะโพสต์คอลัมน์เหล่านี้ในช่วงเวลาหนึ่งของวัน และหน้าต่างๆ จะไม่ค่อยมีการเปลี่ยนแปลงหลังจากนั้น หน้าเหล่านี้เหมาะสำหรับการแคชไฟล์แบบคงที่ อันที่จริง นี่คือสิ่งที่เรียกว่าระบบข่าวประชาสัมพันธ์ทำ ดังนั้นคุณจึงสามารถอ้างอิงแนวคิดของระบบเหล่านี้เพื่อแปลงเพจ ASP แบบไดนามิกดั้งเดิมของคุณได้
2. เพจเหล่านั้นถูกสร้างขึ้นโดยใช้ตรรกะเดียวกันสำหรับผู้เข้าชมทั้งหมด (นั่นคือ ผู้เข้าชมจะไม่แยกแยะ)
นอกเหนือจากคอลัมน์ เช่น ข่าวสารและข้อมูลที่ผู้เยี่ยมชมทุกคนเห็นอินเทอร์เฟซเดียวกันแล้ว โดยทั่วไปแล้ว แอปพลิเคชันที่ใช้ทรัพยากร เช่น ฟอรัม ยังได้รับการออกแบบเพื่อสร้างตรรกะแบบครบวงจร (โพสต์เดียวกันจะถูกดูเหมือนกันโดยคนสามคนและคนสามคนสำหรับ) หน้าแอปพลิเคชันดังกล่าวเราก็สามารถทำได้โดยใช้แคชแบบคงที่ คุณยังสามารถพิจารณาแยกส่วนข้อมูลและใช้เทคโนโลยีการเขียนสคริปต์เพื่อประมวลผลข้อมูลนอกความสามารถในการประมวลผลของเซิร์ฟเวอร์ ซึ่งก็คือเบราว์เซอร์ไคลเอ็นต์
3. ต้นทุนและกำไรจากการใช้แคช
สิ่งสำคัญคือพื้นที่สำหรับเวลา (ตอบสนอง) ใช้เทคโนโลยีแคชเพื่อประมวลผลเนื้อหาล่วงหน้าซึ่งจำเป็นบ่อยครั้งในอนาคต เพื่อปรับปรุงการตอบสนองของเว็บเซิร์ฟเวอร์ และที่สำคัญกว่านั้น ชนะใจผู้เยี่ยมชม
ราคาคือความต้องการพื้นที่เว็บเพิ่มขึ้น และในขณะเดียวกัน ผลกระทบในการเข้าถึงก็อาจได้รับผลกระทบ
แต่ฉันคิดว่าการแคชที่เหมาะสมมีข้อดีมากกว่าข้อเสีย
4. สถานที่เหล่านั้นไม่เหมาะสำหรับการแคช
ในหน้าไดนามิกเคียวรี เนื้อหาเคียวรีของทุกคนแตกต่างกัน ดังนั้นผลลัพธ์ที่แสดงจึงแตกต่างกัน ดังนั้นจึงไม่น่าที่จะแคชผลลัพธ์ของการสืบค้น ดังนั้นการแคชจึงซับซ้อนกว่าและการใช้งานแคชต่ำ ส่งผลให้มีต้นทุนการจัดการสูง (สมมติว่าคุณแคช ค้นหาคีย์เวิร์ด 1,000 คำ จากนั้นการจัดการความสอดคล้องระหว่างคีย์เวิร์ดและแคชก็เป็นปัญหาเช่นกัน)
4. ตัวอย่างการวิเคราะห์
สมมติว่าเค้าโครงดั้งเดิมของฟอรัมข้อเสนอแนะเป็นดังนี้:
ภายใต้ไดเร็กทอรีราก:
หน้าแรกของ default.asp มักจะเน้น คำแนะนำ ฯลฯ
listBorad.asp ไฟล์นี้แสดงรายการชื่อและการแนะนำของคอลัมน์ทั้งหมด หากมีพารามิเตอร์ MainBID หมายความว่าจะต้องแสดงรายการคอลัมน์ภายใต้ส่วนนี้
listThread.asp หากไฟล์นี้ไม่มีพารามิเตอร์ใดๆ แสดงว่ามีการโพสต์ทั้งหมด และหากมี MainBID แสดงว่ามีการแสดงรายการโพสต์ทั้งหมดในบล็อกหนึ่งๆ หากมีการดำเนินการ subBID หมายความว่ารายการโพสต์ในคอลัมน์เฉพาะ หากมีการนำพารามิเตอร์ของเพจ หัวข้อต่างๆ จะแสดงอยู่ในเพจ
ViewThread.asp แสดงรายการเนื้อหาของโพสต์ เราถือว่าโพสต์นั้นแสดงเป็นความคิดเห็น และความคิดเห็นใดๆ จะแสดงอยู่ที่ส่วนท้าย พารามิเตอร์ ID คือโพสต์ที่จะแสดง
Reply.asp ตอบกลับโพสต์และมีพารามิเตอร์ Id เพื่อตอบกลับโพสต์
ส่วนคนอื่นๆ จะไม่ได้รับการพิจารณาในตอนนี้
จากที่กล่าวมาข้างต้น เราจะเห็นว่าหากทำทุกอย่างโดยใช้ ASP/PHP ดั้งเดิม การดำเนินการกับไฟล์ ASP เกือบทุกไฟล์จำเป็นต้องมีการดำเนินการฐานข้อมูล การสืบค้นบ่อยครั้ง และการสืบค้นแบบหลายตาราง คุณต้องทราบว่าการสืบค้นฐานข้อมูลในที่สุดจะส่งผลให้ประสิทธิภาพและความเร็วในการตอบสนองลดลง ซึ่งจะส่งผลต่อการเรียกดูที่ช้าของผู้เยี่ยมชมและไม่เอื้อต่อคุณภาพของเว็บ สิ่งที่สำคัญกว่านั้นคือสำหรับคนสองคน A และ B หากพวกเขาเข้าถึง ViewThread.asp และที่คล้ายกัน หาก ID เหมือนกัน หลายครั้งที่พวกเขาจะเห็นเนื้อหาเดียวกัน (โค้ด HTML ที่เบราว์เซอร์ได้รับเกือบจะเป็น เหมือนกัน) แต่สำหรับเนื้อหาเดียวกันนี้ เซิร์ฟเวอร์จำเป็นต้องเปิดการเชื่อมต่อฐานข้อมูล แบบสอบถาม อ่านบันทึก แสดง ปิดบันทึก และการเชื่อมต่อฐานข้อมูล - - - หากมีคนเข้าถึงการดำเนินการต่อไปนี้ที่ใช้ทรัพยากรเซิร์ฟเวอร์มากขึ้น ผลลัพธ์สุดท้ายก็คือคนเหล่านี้ใช้ทรัพยากรเซิร์ฟเวอร์มากขึ้น ในความเป็นจริง ความพยายามซ้ำๆ เหล่านี้สำหรับเนื้อหาเดียวกันสามารถหลีกเลี่ยงได้โดยใช้เทคโนโลยีแคชเพื่อการปรับให้เหมาะสม ตัวอย่างเช่น:
หลังจากส่งเนื้อหาใน Reply.asp เราจะเรียกใช้ฟังก์ชันคงที่ทันทีและจัดเก็บเนื้อหาโพสต์ทั้งหมดเป็นไฟล์ html แบบคงที่ เช่น viewThread_xxxx.htm ภายใต้สถานการณ์ปกติ เมื่อเข้าถึง viewThread.asp?ID=xxxx ระบบจะเปลี่ยนเส้นทางโดยอัตโนมัติ ไปยังไฟล์คงที่ viewThreadxxxx.htm ที่เกี่ยวข้อง ด้วยวิธีนี้ เมื่อโพสต์ไม่มีการเผยแพร่ล่าสุด โพสต์นั้นจะเป็นเนื้อหาคงที่ที่มอบให้กับผู้ดูเสมอ เมื่อมีการส่งใหม่ โพสต์นั้นจะได้รับการอัปเดตเป็นไฟล์คงที่ ด้วยวิธีนี้ การดำเนินการฐานข้อมูลจำนวนมากจะถูกบันทึก และการตอบสนองจะดีขึ้นอย่างมาก
listBorad.asp ยังสามารถนำไปใช้แบบคงที่ได้ เราสามารถวิเคราะห์พารามิเตอร์ที่อาจมี ตั้งชื่อไฟล์แคชเป็น listBoard_xx.htm และอัปเดต listBoard_xxx.htm เมื่อเพิ่มคอลัมน์ใหม่ listThread.asp จะคล้ายกัน ยกเว้นว่าเนื่องจากมีพารามิเตอร์มากกว่า จึงจะมีไฟล์แคชจำนวนมาก หากคุณต้องการแคช listThread.asp? subBID=xxx&page=2 ดังนั้นไฟล์คงที่ที่เกี่ยวข้องคือ listThread_xxx_p2.htm เช่นเดียวกับ default.asp
แล้วจะบอกว่าจะอัพเดตเมื่อไร? เมื่อไหร่จะอัพเดตครับ?
เมื่อพูดถึง listThread.asp? subBID=xxx&page=2 เราจะแยก subID และเพจเมื่อดำเนินการ listThread.asp จากนั้นตรวจสอบว่ามี listThread_xxx_p2.htm อยู่หรือไม่ หากไม่มี ให้เรียกใช้ฟังก์ชันการสร้างแบบคงที่เพื่อสร้างไฟล์ และสุดท้ายเปลี่ยนเส้นทาง ที่นี่ไฟล์คงที่ โปรดทราบว่าการไม่มีที่นี่หมายความว่ามีเนื้อหาใหม่ที่ต้องได้รับการอัปเดต
แล้วจะทำให้ไฟล์ไม่มีอยู่ได้อย่างไร? ลบ. เมื่อเราเผยแพร่โพสต์ใหม่ ลบโพสต์ หรือย้ายโพสต์ เราสามารถลบไฟล์คงที่ทั้งหมด เช่น listThread_xxx_p2.htm สิ่งนี้จะบอกคุณเมื่อต้องแคช
ตอนนี้มีคำถามเหลืออยู่หนึ่งข้อ คือ จะสร้างไฟล์สแตติกได้อย่างไร?
เราทราบสิ่งเดียวกันกับที่เรากล่าวถึงก่อนหน้านี้ เราสามารถสร้างสำเนาของ default.asp, listThread.asp ฯลฯ ก่อนการแปลงชื่อ default_d.asp, listThread_2.asp และในไดเร็กทอรีเดียวกัน (ในทางทฤษฎี listThtrad.asp?s ผลลัพธ์การเข้าถึงของ ubID=123 และ LISTtHREAD_D.ASP?SUBID=123 จะเหมือนกัน) ดังนั้นในตรรกะที่ต้องการสร้างไฟล์คงที่ เราจะเรียกสำเนาก่อนการแปลงผ่านคำขอเข้าถึงเว็บ รับโค้ด html และจัดเก็บ สำหรับไฟล์แบบคงที่ คำขอทางเว็บนี้จริงๆ แล้วเทียบเท่ากับเซิร์ฟเวอร์ที่กำลังดู HTML ซึ่งจะถูกส่งออกก่อนที่เบราว์เซอร์จริงจะเข้าถึงเนื้อหาแบบคงที่ จากนั้นส่งคืนรหัสเหล่านี้และจัดเก็บเป็นไฟล์แบบคงที่โดยใช้ฟังก์ชันการทำงานของไฟล์ ด้วยวิธีนี้ไฟล์แคชจะถูกสร้างขึ้นต่อหน้าผู้ดูจริง
วิธีแก้ปัญหาดังกล่าวแทบจะไม่แตะต้องเค้าโครงดั้งเดิมเลย และแทบจะไม่เคยทำให้เกิดข้อผิดพลาดเช่น 404 เลยเนื่องจากการดัดแปลง ประการที่สอง ไฟล์คงที่จะช่วยให้เว็บไซต์ของคุณจัดทำดัชนีโดยเครื่องมือค้นหาเช่น Google ได้อย่างง่ายดาย ทำไมไม่?
สุดท้ายนี้ การแจ้งเตือนผ่านการเข้าถึงเว็บในสภาพแวดล้อมการเขียนโปรแกรม ASP หลายคนใช้คอมโพเนนต์ xmlHTTP ในการเข้าถึง ซึ่งจะทำให้เกิดปัญหามากมาย xmlhttp เองจะแคชทรัพยากรที่ร้องขอ ทำให้เนื้อหาที่เราร้องขอผ่านส่วนประกอบนี้ไม่ใช่เนื้อหาล่าสุด ทำให้เกิดความสับสนทางตรรกะ ดังนั้น คุณควรเลือกอ็อบเจ็กต์ xml Server http หรือคอมโพเนนต์ winhttp เพื่อใช้ทรัพยากรคำขอเว็บ
การใช้เทคโนโลยีแคชใน ASP สามารถปรับปรุงประสิทธิภาพเว็บไซต์ของคุณได้อย่างมาก อันที่จริง วิธีการนำไปใช้งานเหล่านี้ทำได้ง่ายมาก ซึ่งจะอธิบายวิธีการทำงานของแคชบนเซิร์ฟเวอร์ และวิธีที่คุณสามารถใช้วิธีที่เรียกว่าเทคโนโลยีการเชื่อมต่อ ADO
ก่อนที่จะแนะนำเทคโนโลยีเหล่านี้ เรามาอธิบายว่าเทคโนโลยีแคช ASP คืออะไรกันแน่
จริงๆ แล้วสิ่งที่เรียกว่าแคชคือการเปิดพื้นที่ในหน่วยความจำเพื่อบันทึกข้อมูล โดยการใช้แคช คุณไม่จำเป็นต้องเข้าถึงข้อมูลที่คุณบันทึกไว้ในฮาร์ดดิสก์บ่อยครั้ง คุณสามารถหลีกเลี่ยงได้ ความทุกข์ทรมานจากการดูฮาร์ดดิสก์ที่ไม่ดีเต็ม ฉันทรมานกับการอ่านข้อมูล เมื่อคุณดำเนินการสืบค้นและใส่ผลลัพธ์การสืบค้นลงในแคช คุณจะสามารถเข้าถึงข้อมูลซ้ำ ๆ ได้อย่างรวดเร็ว และถ้าคุณไม่ใส่ข้อมูลลงในแคช เมื่อคุณดำเนินการค้นหาอีกครั้ง เซิร์ฟเวอร์จะใช้เวลากระบวนการในการรับและเรียงลำดับจากฐานข้อมูล
เมื่อข้อมูลถูกเก็บไว้ในแคช เวลาที่ใช้ในการสืบค้นอีกครั้งจะเป็นเวลาในการแสดงข้อมูลเป็นหลัก
กล่าวอีกนัยหนึ่ง เราไม่ควรใส่ข้อมูลที่จำเป็นต้องเปลี่ยนแปลงบ่อยครั้งในแคชของเซิร์ฟเวอร์ เราควรใส่ข้อมูลที่เปลี่ยนแปลงน้อยลงแต่จำเป็นต้องเข้าถึงบ่อยครั้งในแคช
ตอนนี้เราจะหารือกันว่า ASP ใช้เทคโนโลยีแคชบนฝั่งเซิร์ฟเวอร์อย่างไร และจากนั้นเราจะหารือว่า ASP ใช้เทคโนโลยีดังกล่าวบนฝั่งไคลเอ็นต์อย่างไร
เทคโนโลยีแคช
เมื่อคุณมีข้อมูลจำนวนมาก (คงที่ ซึ่งเปลี่ยนแปลงน้อยกว่า) ที่ต้องแสดงต่อไคลเอ็นต์ คุณสามารถพิจารณาใช้เทคโนโลยีการแคชฝั่งเซิร์ฟเวอร์ได้ เทคโนโลยีนี้เหมาะอย่างยิ่งสำหรับเว็บไซต์ที่มีรูปแบบการแสดงผลที่สม่ำเสมอ (555 มันไม่ง่ายที่จะใช้กับเว็บไซต์ที่ไม่ใช่กระแสหลัก)
ในความเป็นจริง วิธีการนำไปใช้นั้นง่ายมาก คุณจะต้องดูตัวอย่างง่ายๆ ด้านล่างนี้เท่านั้นจึงจะเข้าใจ
นี่คือโปรแกรมตัวอย่างสำหรับแสดงหมวดหมู่หนังสือ
ไฟล์ DisplayBooks.ASP:
< %@ LANGUAGE=จาวาสคริปต์ % >
<html>
<ร่างกาย>
<แบบฟอร์มวิธีการ=โพสต์>
การจำแนกประเภทหนังสือ; < %= getBooksListBox() % >
<p>
< ประเภทอินพุต = ส่ง >
-
ฟังก์ชั่น getBooksListBox()
-
BooksListBox = แอปพลิเคชัน (BooksListBox)
ถ้า (BooksListBox != null) ส่งคืน BooksListBox;
crlf = String.fromCharCode (13, 10)
BooksListBox = <เลือกชื่อ=หนังสือ> + crlf;
SQL = เลือก * จากหนังสือหรือตามชื่อ;
cnnBooks = Server.CreateObject (ADODB.Connection);
cnnBooks.Open(หนังสือ, ผู้ดูแลระบบ,);
rstBooks = cnnBooks.Execute(SQL);
fldBookName = rstBooks (ชื่อหนังสือ);
ในขณะที่ (!rstBooks.EOF){
BooksListBox = BooksListBox + <ตัวเลือก> +
fldBookName + + crlf;
rstBooks.MoveNext();
-
BooksListBox = BooksListBox +
แอปพลิเคชัน (BooksListBox) = BooksListBox
กลับ BooksListBox;
-
-
มันง่ายมาก จริงๆ แล้ว มันใช้เทคโนโลยี Application ที่ง่ายมาก และความแตกต่างมีเพียงประโยคเดียวเท่านั้น:
แอปพลิเคชัน (BooksListBox) = BooksListBox
คุณสามารถตรวจสอบได้และคุณจะพบว่าจำนวนคำขอบนเซิร์ฟเวอร์จะลดลงอย่างมาก สถานการณ์นี้เหมาะอย่างยิ่งสำหรับเนื้อหาเว็บไซต์ที่ไม่ได้อัปเดตบ่อยนัก เช่น คุณอัปเดตเพียงวันละครั้ง (หรือเป็นเวลานาน)
ต่อไป เราจะหารือเกี่ยวกับเทคโนโลยีแคชฝั่งไคลเอ็นต์ เทคโนโลยีนี้เรียกอีกอย่างว่าเทคโนโลยีการเชื่อมต่อ ADO แบบตัดการเชื่อมต่อ (ระดับการแปลต่ำเกินไป ทำไมจึงฟังดูน่าอึดอัดใจ) เทคโนโลยีนี้ใช้เพื่อบันทึกข้อมูลส่วนบุคคลของผู้ใช้เป็นหลัก เช่น รหัสผ่านผู้ใช้ ชื่อรหัส เป็นต้น ส่วนใหญ่จะใช้คุณสมบัติบางอย่างของ ADO ขณะเดียวกันก็ยังตอบคำถามว่าสามารถใช้ออบเจ็กต์ ADO ใน Applocation ที่ชาวเน็ตบางคนกล่าวถึงได้หรือไม่ คำอธิบายไม่ชัดเจน ให้โค้ดพูด:
ไฟล์ GLOBAL.ASA:
< !--ประเภทเมตาดาต้า=TypeLib FILE=C:/Program Files/Common
ไฟล์/ระบบ/ado/msado15.dll-->
< ภาษาสคริปต์=VBScript RUNAT=เซิร์ฟเวอร์ >
Application_OnStart ย่อย
SQL = เลือกชื่อผู้ใช้, รหัสผ่านจาก UserInfo
cnnUsers = DSN=ผู้ใช้
ตั้งค่า rsUsers = Server.CreateObject(ADODB.Recordset)
'โปรดทราบว่าสองประโยคต่อไปนี้ใช้ในการใช้เทคโนโลยี ADO ที่เรียกว่าการตัดการเชื่อมต่อที่มีอยู่
rsCustomers.CursorLocation = adUseClient
rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly
' ตัดการเชื่อมต่อ RecordSet ออกจากฐานข้อมูล
rsCustomers.ActiveConnection = ไม่มีเลย
ตั้งค่าแอปพลิเคชัน (rsCustomers) = rsCustomers
จบหมวดย่อย
FileUsers.ASP
-
'วิธีการโคลนช่วยให้ผู้ใช้แต่ละคนมีคอลเลกชัน RecordSet ของตัวเอง
ตั้งค่า yourUsers = Application(rsUsers).Clone
ตั้งชื่อผู้ใช้ = yourUsers(ชื่อผู้ใช้)
ตั้งรหัสผ่าน = yourUsers(รหัสผ่าน)
ทำจนกว่า yourUsers.EOF
-
ชื่อผู้ใช้: < %= ชื่อผู้ใช้ % > รหัสผ่านผู้ใช้: < %= รหัสผ่าน % >
-
yourUsers.MoveNext
วนซ้ำ
-
สำหรับบทบาทของแคช ฉันคิดว่าฉันไม่จำเป็นต้องพูดอะไรมากไปกว่านั้น บทบาทของแคชก็ชัดเจนอยู่แล้ว โดยเฉพาะเว็บไซต์ที่มีข้อมูลจำนวนมากหรือหน้าฐานข้อมูลเต็มรูปแบบ มันสามารถใช้ประโยชน์จากทรัพยากรหน่วยความจำของโฮสต์และ เร่งประสิทธิภาพการดำเนินการ ASP ลดภาระบนเซิร์ฟเวอร์ Dongwang มีความโดดเด่นที่สุดในด้านนี้ ตัวอย่างเช่น เวอร์ชัน dvbbs7.1.0 ในปัจจุบันได้ยกระดับการใช้งานแคชขึ้นไป การดำเนินการส่วนใหญ่ทั้งด้านหน้าและด้านหลังเกี่ยวข้องกับแคช และตอนนี้สิ่งที่ใช้ใน Dongwang คือ คลาสแคชของ Lost City Prodigal Son:
-
คลาส Cls_Cache
'================== คำแนะนำในการใช้งาน====================
'โมดูลนี้เป็นผลงานต้นฉบับของ Dongwang Pioneer ผู้แต่ง: Lost City Prodigal หากคุณใช้โมดูลประเภทนี้ โปรดอย่าลบคำอธิบายนี้ ความคิดเห็นนี้ไม่ส่งผลต่อความเร็วในการดำเนินการ
'บทบาท: คลาสการจัดการแคชและแคช
'ตัวแปรสาธารณะ: เวลาหมดอายุของเวลาโหลดซ้ำ (เป็นนาที) ค่าเริ่มต้นคือ 14400
'MaxCount คือค่าสูงสุดของออบเจ็กต์ที่แคชไว้ หากเกินนั้น ออบเจ็กต์ที่มีการใช้งานน้อยจะถูกลบโดยอัตโนมัติ ค่าเริ่มต้นคือ 300
'CacheName คือชื่อรวมของกลุ่มแคช ค่าเริ่มต้นคือ Dvbbs หากมีกลุ่มแคชมากกว่าหนึ่งกลุ่มในไซต์ ค่านี้จำเป็นต้องเปลี่ยนจากภายนอก
'แอตทริบิวต์:ชื่อกำหนดชื่อวัตถุแคช คุณลักษณะการเขียนเท่านั้น
'แอตทริบิวต์: ค่า อ่านและเขียนข้อมูลแคช'
'ฟังก์ชั่น: ObjIsEmpty() กำหนดว่าแคชปัจจุบันหมดอายุหรือไม่
'วิธีการ: DelCahe(MyCacheName) ลบวัตถุแคชด้วยตนเอง พารามิเตอร์คือชื่อของวัตถุแคช
-
เวลาโหลดสาธารณะ MaxCount ชื่อแคช
LocalCacheName ส่วนตัว, ข้อมูลแคช, DelCount
Class_Initialize ส่วนตัว ()
Reloadtime=14400 'เวลาหมดอายุ (หน่วย: นาที)
CacheName=Dvbbs 'ชื่อทั้งหมดของกลุ่มแคช
จบหมวดย่อย
SetCache ย่อยส่วนตัว (SetName, NewValue)
แอปพลิเคชั่นล็อค
แอปพลิเคชัน (SetName) = NewValue
แอปพลิเคชันปลดล็อค
จบหมวดย่อย
ชื่อทรัพย์สินสาธารณะ (ByVal vNewValue) 'ชื่อวัตถุแคช
LocalCacheName=LCase(vNewValue)
สิ้นสุดคุณสมบัติ
ค่าทรัพย์สินสาธารณะ (ByVal vNewValue) 'อ่านและเขียนข้อมูลแคช
ถ้า LocalCacheName<> จากนั้น
CacheData=Application(ชื่อแคช&_&LocalCacheName)
ถ้า IsArray(CacheData) แล้ว
ข้อมูลแคช(0)=vNewValue
ข้อมูลแคช(1)=ตอนนี้()
อื่น
ReDim ข้อมูลแคช(2)
ข้อมูลแคช(0)=vNewValue
ข้อมูลแคช(1)=ตอนนี้()
สิ้นสุดถ้า
ตั้งค่าแคช CacheName&_&LocalCacheName,CacheData
อื่น
Err.Raise vbObjectError + 1, DvbbsCacheServer โปรดเปลี่ยนชื่อแคช
สิ้นสุดถ้า
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับค่า ()
ถ้า LocalCacheName<> จากนั้น
CacheData=Application(ชื่อแคช&_&LocalCacheName)
ถ้า IsArray(CacheData) แล้ว
ค่า=ข้อมูลแคช(0)
อื่น
Err.Raise vbObjectError + 1, DvbbsCacheServer, ข้อมูลแคชว่างเปล่า
สิ้นสุดถ้า
อื่น
Err.Raise vbObjectError + 1, DvbbsCacheServer โปรดเปลี่ยนชื่อแคช
สิ้นสุดถ้า
สิ้นสุดคุณสมบัติ
ฟังก์ชั่นสาธารณะ ObjIsEmpty() 'ตรวจสอบว่าแคชปัจจุบันหมดอายุหรือไม่
ObjIsEmpty=จริง
CacheData=Application(ชื่อแคช&_&LocalCacheName)
ถ้าไม่ใช่ IsArray(CacheData) ให้ออกจากฟังก์ชัน
ถ้าไม่ใช่ IsDate(CacheData(1)) ให้ออกจากฟังก์ชัน
ถ้า DateDiff(s,CDate(CacheData(1)),Now()) < 60*เวลาโหลดใหม่ จากนั้น ObjIsEmpty=False
ฟังก์ชันสิ้นสุด
makeEmpty ย่อยส่วนตัว (SetName) 'ปล่อยหน่วยความจำ
แอปพลิเคชั่นล็อค
แอปพลิเคชัน (SetName) = ว่างเปล่า
แอปพลิเคชันปลดล็อค
จบหมวดย่อย
DelCache ย่อยสาธารณะ (MyCacheName) ' ลบแคช
makeEmpty(ชื่อแคช&_&MyCacheName)
จบหมวดย่อย
จบคลาส
'ตั้งค่า WydCache=Cls_Cache ใหม่'
'WydCache.Reloadtime=0.5 'กำหนดเวลาหมดอายุ (เป็นนาที)
'WydCache.CacheName=pages 'กำหนดชื่อแคช
'IF WydCache.ObjIsEmpty() จากนั้น ''ตรวจสอบว่าว่างหรือไม่ (รวมถึงการหมดอายุและว่างเปล่าหรือไม่)
'การตอบกลับเขียน WydCache.Value
'อื่น
-
'BoardJumpList=xxx
'WydCache.Value=BoardJumpList 'เขียนเนื้อหา
'Response.write BoardJumpList'
'จบถ้า
-
'mycache.DelCache(ชื่อแคช) ลบแคช
-