لقد مرت 7 سنوات منذ إصدار ASP، وأصبح استخدام تقنية ASP ناضجًا تمامًا منذ أن أطلقت Microsoft ASP.NET، توقفت تدريجيًا عن تحديث إصدار ASP. ولكن نظرًا لأن العديد من الأشخاص ما زالوا معتادين على استخدام ASP لتطوير مواقع الويب، فسوف أستخدم مرة أخرى مثالًا بسيطًا لتوضيح كيفية استخدام ذاكرة التخزين المؤقت في ASP.
ببساطة، المبدأ الأساسي لاستخدام ذاكرة التخزين المؤقت هو تخزين البيانات المطلوبة بشكل متكرر والمكلفة في الذاكرة لفترة معينة من الوقت بحيث يمكن الوصول إلى هذه البيانات بشكل مباشر وعالمي. على سبيل المثال، هناك بعض البيانات التي تحتاج إلى الاستعلام عنها من جداول متعددة في قاعدة البيانات، وتحتاج كل صفحة تقريبًا إلى استدعاء هذه البيانات. أفضل تطبيق في هذه الحالة هو تخزين هذا الجزء من البيانات مؤقتًا. التنفيذ البسيط في ASP هو تغليف نموذج التعبير النهائي لهذه البيانات (مثل دفق HTML) في سلسلة ثم تخزينه في كائن ASP المدمج. التطبيق (هذه المقالة بشكل رئيسي ما تمت مناقشته هو ذاكرة التخزين المؤقت الديناميكية، وسيتم حذف تطبيقات ASP البسيطة). وتتمثل ميزة ذلك في أنه يمكن استدعاء HTML هذا عالميًا عبر موقع الويب بأكمله، ويتم تخزين التطبيق في الذاكرة، لذلك ليست هناك حاجة للاستعلام عن قاعدة البيانات، وبالتالي تسريع وقت الاستجابة وتوفير تحميل الخادم. بالطبع، يأتي هذا على حساب استهلاك الذاكرة وهو مثال نموذجي لتبادل المساحة بالوقت.
على الرغم من وجود فوائد عديدة لاستخدام هذه الطريقة، إلا أنه عند مواجهة مصادر البيانات (قواعد البيانات) المتغيرة بشكل متكرر، قد لا تعد هذه الطريقة قابلة للتطبيق، لأن كائن تطبيق ASP له عيب، وهو أنه لا يمكن أن يتغير تلقائيًا مع التغييرات في مصدر البيانات تغيير أو التحكم في الفاصل الزمني للتحديث. لذلك، يحتاج المطورون إلى البرمجة لتنفيذ ذاكرة التخزين المؤقت الديناميكية. بالطبع، أثناء تصميم البرنامج، يمكن تحديث التطبيق في كل مرة يتم فيها تغيير مصدر البيانات (قاعدة البيانات). وبالتالي فإن مصدر البيانات (قاعدة البيانات) يكون دائمًا ثابتًا. سيكون هناك المزيد من المشكلات التي يجب مراعاتها في البرمجة، ومن السهل تفويت التفاصيل. لذلك لا أنصح بهذه الطريقة إلا في حالات محددة.
أعتقد أن أفضل طريقة في ASP هي استخدام البرمجة لتحديث ذاكرة التخزين المؤقت بانتظام، مما يعني تحديد وقت انتهاء صلاحية البيانات المخزنة في التطبيق. بالطبع، لا يحتوي كائن التطبيق في ASP على سمة ExpireTime هذه. وهذا يحتاج إلى أن يتم تنفيذه برمجيا.
شفرة
ASP: default.asp
< %@Language=VBScript% >
<%الخيار الصريح%>
<%Response.Buffer=True%>
<!--#include file = "conn.asp"-->
<!--#include file = "GetCache.asp"-->
<أتش تي أم أل>
<الرأس>
<TITLE>عرض ASP لذاكرة التخزين المؤقت</TITLE>
<META HTTP-EQUIV="نوع المحتوى" CONTENT="text/html; مجموعة الأحرف=gb2312">
</الرأس>
<الجسم>
<h4>قم بتحديث ذاكرة التخزين المؤقت كل 10 ثوانٍ:</h4>
<%
استجابة. فلوش
GetHTMLStream
استجابة.اكتب
HTMLStream
%>
</الجسم>
</html>
ASP:getcache.asp
<%
Const CACHE_DEFAULT_INTERVAL = 30 'تحديث ذاكرة التخزين المؤقت كل 30 ثانية
خافت HTMLStream
DimIsExpires
IsExpires = CacheExpires
تنتهي صلاحية ذاكرة التخزين المؤقت للوظيفة
خافت strLastUpdate
نتيجة باهتة strLastUpdate = Application("LastUpdate")
إذا (strLastUpdate = "") أو (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now)) إذن
النتيجة = صحيح
SetLastUpdateTime
آخر
النتيجة = خطأ
نهاية إذا
انتهاء صلاحية ذاكرة التخزين المؤقت = النتيجة
نهاية الوظيفة
الفرعية SetLastUpdateTime
التطبيق.القفل
التطبيق("LastUpdate") = CStr(الآن())
التطبيق.فتح
نهاية Sub
Sub GetHTMLStream
إذا انتهت صلاحيته بعد ذلك
تحديثHTMLStream
نهاية إذا
HTMLStream=Application("CACHE_HTMLStream")
إنهاء
التحديث الفرعيHTMLStream
خافت د
d = جلبHTMLStream
التطبيق.القفل
التطبيق ("CACHE_HTMLStream") = د
التطبيق.فتح
نهاية
الوظيفة الفرعية FetchHTMLStream
خافت RS، strSQL، strHTML
مجموعة rs = CreateObject("ADODB.Recordset")
strSQL = "حدد معرف الفئة واسم الفئة من الفئات"
rs.Open strSQL، strConn،adOpenForwardOnly،adLockReadOnly
strHTML = strHTML & "<select name=""slt_search"">"
بينما (ليس rs.EOF)
strHTML = strHTML & "<option>"
strHTML = strHTML & rs.Fields("categoryname")
strHTML = strHTML & "</option>" rs.MoveNext
com.wind
strHTML = strHTML & "</select>"
إغلاق
سيترز = لا شيء
FetchHTMLStream = strHTML
وظيفة النهاية
%>
ASP: conn.asp
<!--METADATA NAME="مكتبة كائنات بيانات Microsoft ActiveX 2.5" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
<%
خافت strConn
strConn = "الموفر=SQLOLEDB.1؛الأمان المتكامل=SSPI؛معلومات الأمان المستمرة=خطأ؛الكتالوج الأولي=Northwind"
%>