เป็นเวลา 7 ปีแล้วนับตั้งแต่ ASP เปิดตัว และการใช้เทคโนโลยี ASP ก็ค่อนข้างจะสมบูรณ์ นับตั้งแต่ Microsoft เปิดตัว ASP.NET ก็ค่อยๆ หยุดการอัปเดตเวอร์ชัน ASP แต่เนื่องจากหลายๆ คนยังคงคุ้นเคยกับการใช้ ASP ในการพัฒนาเว็บไซต์ ผมจะใช้ตัวอย่างง่ายๆ เพื่อแสดงวิธีใช้ Cache ใน ASP อีกครั้ง
พูดง่ายๆ ก็คือ หลักการพื้นฐานของการใช้แคชคือการจัดเก็บข้อมูลที่จำเป็นบ่อยครั้งและมีราคาแพงไว้ในหน่วยความจำในช่วงระยะเวลาหนึ่งเพื่อให้สามารถเข้าถึงข้อมูลเหล่านี้ได้โดยตรงและทั่วโลก ตัวอย่างเช่น มีข้อมูลบางอย่างที่ต้องสืบค้นจากหลายตารางในฐานข้อมูล และเกือบทุกหน้าจำเป็นต้องเรียกข้อมูลนี้ การใช้งานที่ดีที่สุดในกรณีนี้คือการแคชข้อมูลส่วนนี้ การใช้งานอย่างง่ายใน ASP คือการห่อหุ้มรูปแบบนิพจน์สุดท้ายของข้อมูลเหล่านี้ (เช่นสตรีม HTML) ในสตริงแล้วจัดเก็บไว้ในวัตถุในตัว ASP แอปพลิเคชัน (บทความนี้ส่วนใหญ่จะกล่าวถึงสิ่งที่จะกล่าวถึงคือไดนามิกแคช และแอปพลิเคชัน ASP แบบธรรมดาจะถูกละเว้น) ข้อดีคือสามารถเรียก HTML นี้ได้ทั่วโลกทั่วทั้งเว็บไซต์ และแอปพลิเคชันถูกจัดเก็บไว้ในหน่วยความจำ ดังนั้นจึงไม่จำเป็นต้องสืบค้นฐานข้อมูล จึงช่วยเร่งเวลาตอบสนองและประหยัดเวลาโหลดเซิร์ฟเวอร์ แน่นอนว่าสิ่งนี้ต้องแลกมาด้วยการใช้หน่วยความจำและเป็นตัวอย่างทั่วไปของการแลกเปลี่ยนพื้นที่สำหรับเวลา
แม้ว่าการใช้วิธีนี้จะมีประโยชน์มากมาย แต่เมื่อพบกับแหล่งข้อมูล (ฐานข้อมูล) ที่เปลี่ยนแปลงบ่อยครั้ง วิธีการนี้อาจไม่สามารถใช้ได้อีกต่อไป เนื่องจากออบเจ็กต์ ASP Application มีข้อเสีย กล่าวคือ ไม่สามารถเปลี่ยนแปลงโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงในแหล่งข้อมูล . เปลี่ยนหรือควบคุมช่วงเวลารีเฟรช ดังนั้นนักพัฒนาจึงต้องเขียนโปรแกรมเพื่อใช้แคชแบบไดนามิก แน่นอนว่าในระหว่างการออกแบบโปรแกรม Application สามารถอัพเดตได้ทุกครั้งที่มีการเปลี่ยนแปลงแหล่งข้อมูล (ฐานข้อมูล) ดังนั้นแหล่งข้อมูล (ฐานข้อมูล) จึงมีความสม่ำเสมออยู่เสมอ จะมีปัญหาเพิ่มเติมที่ต้องพิจารณาในการเขียนโปรแกรม และอาจพลาดรายละเอียดได้ง่าย ดังนั้นฉันไม่แนะนำวิธีนี้ยกเว้นในสถานการณ์เฉพาะ
ฉันคิดว่าวิธีที่ดีที่สุดใน ASP คือการใช้การเขียนโปรแกรมเพื่อรีเฟรชแคชเป็นประจำ ซึ่งหมายถึงการตั้งเวลาหมดอายุสำหรับข้อมูลที่จัดเก็บไว้ในแอปพลิเคชัน แน่นอน วัตถุแอปพลิเคชันใน ASP ไม่มีแอตทริบิวต์ ExpireTime ดังกล่าว สิ่งนี้จะต้องมีการดำเนินการโดยทางโปรแกรม
รหัส
ASP: default.asp
< %@Language=VBScript% >
<%ตัวเลือกที่ชัดเจน%>
<%Response.Buffer=True%>
<!--#include file = "conn.asp"-->
<!--#include file = "GetCache.asp"-->
<HTML>
<หัว>
<TITLE>การสาธิตแคช ASP</TITLE>
<META HTTP-EQUIV="ประเภทเนื้อหา" CONTENT="text/html; charset=gb2312">
</HEAD>
<ร่างกาย>
<h4>รีเฟรชแคชทุกๆ 10 วินาที:</h4>
-
การตอบสนองฟลัช
รับ HTMLStream
ตอบกลับ.เขียน
HTMLสตรีม
-
</ร่างกาย>
</html>
ASP:getcache.asp
<%
Const CACHE_DEFAULT_INTERVAL = 30 'รีเฟรชแคชทุกๆ 30 วินาที
สตรีม HTML สลัว
DimIsหมดอายุ
IsExpires = แคชหมดอายุ
ฟังก์ชันแคชหมดอายุ
Dim strLastUpdate
ผลลัพธ์ติ่มซำ strLastUpdate = Application("LastUpdate")
ถ้า (strLastUpdate = "") หรือ (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now)) จากนั้น
ผลลัพธ์ = จริง
ตั้งเวลาอัปเดตล่าสุด
อื่น
ผลลัพธ์ = เท็จ
สิ้นสุดถ้า
CacheExpires = ผลลัพธ์
สิ้นสุดฟังก์ชัน
ย่อย SetLastUpdateTime
แอปพลิเคชั่นล็อค
แอปพลิเคชัน ("อัปเดตล่าสุด") = CStr (ตอนนี้ ())
แอปพลิเคชั่นปลดล็อค
สิ้นสุด
ย่อยย่อย GetHTMLStream
หากหมดอายุแล้ว
อัปเดตHTMLStream
สิ้นสุดถ้า
HTMLStream=Application("CACHE_HTMLStream")
สิ้นสุด
การอัพเดตย่อยย่อย HTMLStream
สลัวง
d = FetchHTMLStream
แอปพลิเคชั่นล็อค
แอปพลิเคชัน ("CACHE_HTMLStream") = วัน
แอปพลิเคชั่นปลดล็อค
สิ้นสุด
ฟังก์ชันย่อย FetchHTMLStream
หรี่ rs, strSQL, strHTML
ตั้งค่า rs = CreateObject("ADODB.Recordset")
strSQL = "เลือก categoryID ชื่อหมวดหมู่จากหมวดหมู่"
rs.Open strSQL, strConn,adOpenForwardOnly,adLockReadOnly
strHTML = strHTML & "<select name=""slt_search"">"
ในขณะที่ (ไม่ใช่ rs.EOF)
strHTML = strHTML & "<ตัวเลือก>"
strHTML = strHTML & rs.Fields("ชื่อหมวดหมู่")
strHTML = strHTML & "</option>" rs.MoveNext
เวน
strHTML = strHTML & "</select>"
rs.ปิด
Setrs=ไม่มีอะไร
FetchHTMLStream = strHTML
ฟังก์ชันสิ้นสุด
-
ASP: conn.asp
<!--ชื่อ METADATA = "ไลบรารี Microsoft ActiveX ข้อมูลวัตถุ 2.5" ประเภท = "TypeLib" UUID = "{00000205-0000-0010-8000-00AA006D2EA4}"-->
-
strConn สลัว
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind"
-