تستخدم الصفحة 1 Msxml2.ServerXMLHTTP لالتقاط محتوى الويب. وتستخدم الصفحة 2 ADODB.Stream لكتابة المحتوى الذي تم التقاطه في ملف. وتعطي الصفحة 3 مثالاً محددًا. يجب على أي شخص يعرف لغة asp أن يعرف أن لغة asp هي لغة برمجة نصية تقوم بالترجمة والتنفيذ. وغالبًا ما تكون كفاءة تنفيذ البرامج النصية منخفضة جدًا. إذا كان عدد الزيارات إلى الموقع مرتفعًا نسبيًا، فسوف يستهلك الخادم الكثير من الموارد، والنتيجة هي انخفاض سرعة الوصول إلى الموقع بسرعة البرنامج لتحسين كفاءة التنفيذ، والطريقة الأخرى هي إنشاء ملفات html ثابتة بانتظام للصفحات التي تكثر زيارتها على موقع الويب، والتي يمكن أن تحل مشكلة سرعة الوصول بشكل فعال للغاية. بالطبع، الافتراض هو أن سرعة الخادم الخاص بك ليست بطيئة جدًا وإلا فلن يعمل مهما كان الأمر، ولن يكون له أي تأثير. فيما يلي سأقدم طريقة لاستخدام مكون Msxml2.ServerXMLHTTP للاستيلاء على صفحة الويب الثابتة التي ترغب في إنشائها، ثم استخدام fso أو ado لكتابة الملف تجدر الإشارة إلى أن الأمثلة الواردة في هذه المقالة جميعها تستخدم ترميز utf -8، وإذا تم تغييره إلى gb2312، فيجب تعديل السمات المقابلة أولاً:
<!--'للاستفسار عن الأسئلة ذات الصلة، يرجى زيارة http://www.downcodes.com
وظيفة GetURL(URL)
'تحميل الوظيفة الرئيسية
الفاصل الزمني الثابت = 60
'ضبط الفاصل الزمني
'إذا كان وقت التنزيل بطيئًا جدًا، فاكتبه على أنه 120 ثانية
'الاستجابة.LCID=2052
const lResolve=6
'مهلة اسم المجال الدقة، ثواني
ثابت lConnect=6
"مهلة موقع الاتصال، ثواني."
ثابت الإرسال=6
'مهلة إرسال طلب البيانات، ثواني
ثابت التلقي = 40
"مهلة تنزيل البيانات، ثواني."
على خطأ استئناف التالي
خافت http
قم بتعيين http = Server.CreateObject("Msxml2.ServerXMLHTTP")
http.setTimeouts lResolve*1000،lConnect*1000،lSend*1000،lReceive*1000
http.Open "GET"، URL، خطأ
http.إرسال
حدد الحالة http.readyState
الحالة 0
GetURL = "فشلت تهيئة الكائن"
خطأ.واضح
تعيين http=لا شيء
وظيفة الخروج
الحالة 1
GetURL="مهلة تحليل اسم المجال/مهلة موقع الاتصال"
خطأ.واضح
تعيين http=لا شيء
وظيفة الخروج
الحالة 2
GetURL="انتهت مهلة طلب البيانات. هل الخادم معيب؟"
خطأ.واضح
تعيين http=لا شيء
وظيفة الخروج
الحالة 3
GetURL="انتهت مهلة تنزيل البيانات/انتهت مهلة انتظار التعليقات"
خطأ.واضح
تعيين http=لا شيء
وظيفة الخروج
الحالة 4
'تم التنزيل بنجاح
إنهاء التحديد
إذا كان http.status<>200 إذن
GetURL="فشل التنزيل"&Err.description
خطأ.واضح
تعيين http=لا شيء
وظيفة الخروج
نهاية إذا
إذا http.status = "200" ثم
GetURL=http.ResponseText
'GetURL=SaveFile()
نهاية إذا
تعيين http=لا شيء
وظيفة النهاية
-->
وتتمثل الوظيفة الرئيسية في التقاط محتوى ملف صفحة الويب لمعلمة العنوان. استخدم الطريقة varia=GetURL(" http://www.downcodes.com "). مثل http://localhost/default.asp واستخدم هذه الوظيفة تجدر الإشارة إلى أن السمة Response.LCID=2052 غير مدعومة في نظام التشغيل Windows Server 2000، ولكنها ليست مشكلة كبيرة ويمكن استخدامها بشكل طبيعي طالما. تم التعليق عليه، هناك أيضًا بعض سمات المهلة التي يمكن تخصيصها حسب الحاجة، ولكن احرص على عدم تعيين الوقت قصيرًا جدًا، وإلا إذا كان الملف كبيرًا أو كانت سرعة الوصول إلى العنوان بطيئة، فقد يفشل هذا! يمكننا استخدام هذه الوظيفة للزحف إلى محتوى ملف صفحة الويب الذي تريد إنشاءه. قم بتخزين المحتوى في متغير وانتظر حتى تتم كتابته في الملف!
يتم عرض هذه الفئة أدناه، والتي يتم استخدامها لكتابة المحتوى الذي تم التقاطه للتو بواسطة الوظيفة في الملف المقابل، وقد انتهيت! قم بإنشاء صفحة الويب التي تريد إنشاؤها مباشرة، وهي مريحة للغاية ولا تحتاج إلى تعديل الملف الأصلي!
Class Htmlmaker
'يرجى طرح الأسئلة ذات الصلة، راجع http://www.downcodes.com
'/************************
'/تعليمات إعداد الخاصية
'/اسم المجلد "اسم المجلد"
'/ إذا لم يتم التعيين، فسيتم إنشاء اسم مجلد بتنسيق الوقت [السنة، الشهر، اليوم] تلقائيًا
'/ اسم الملف "اسم الملف" (بما في ذلك اللواحق واللاحقات)
'/ إذا لم يتم التعيين، فسيتم إنشاء اسم ملف بتنسيق الوقت [الساعات والدقائق والثواني] تلقائيًا، مع اللاحقة .html
'/ Htmlstr "محتوى التعليمات البرمجية المُنشأ"
'/************************
خاص HtmlFolder،HtmlFilename،HtmlContent
خاصية عامة تسمح بـ Foldename(str)
HtmlFolder=str
نهاية الخاصية
الملكية العامة اسم الملف (str)
HtmlFilename=str
نهاية الملكية
ملكية عامة دع Htmlstr(str)
HtmlContent=str
نهاية الخاصية
'/************************
'/ وظيفة تاريخ تحويل اسم الملف
'/************************
اسم الوظيفة الخاصة 1(timestr)
خافت s_year، s_month، s_day
s_year=year(timestr)
إذا كان len(s_year)=2 ثم s_year='20'&s_year
s_month = شهر (timestr)
إذا كان s_month <10، فإن s_month = "0"&s_month
s_day=day(timestr)
إذا كان s_day<10 فإن s_day="0"&s_day
Datename1=s_year & s_month & s_day
نهاية الوظيفة
الخاصة Datename2(timestr)
خافت s_hour، s_min، s_ss
s_hour=hour(timestr)
إذا كانت s_hour <10 ثم s_hour = "0"&s_hour
s_دقيقة=دقيقة(timestr)
إذا كانت s_دقيقة <10، فإن s_دقيقة = "0"&s_دقيقة
s_ss=الثانية(timestr)
إذا كان s_ss<10 ثم s_ss="0"&s_ss
Datename2 = s_hour & s_دقيقة & s_ss
وظيفة النهاية
'/***************************
'/ التهيئة
'/************************
فئة فرعية خاصة_initialize()
HtmlFolder=Datename1(الآن)
HtmlFilename=Datename2(الآن)&".html"
أتش تي أم أل سي
نهاية
فرعية خاصة class_terminate()
نهاية الفرعية
'/************************
'/إنشاء ملف HTML
'/************************
العامة الفرعية Htmlmake()
"عند حدوث خطأ في الاستئناف التالي."
مسار الملف الخافت، fso، fout
filepath = HtmlFolder&"/"&HtmlFilename
تعيين fso = Server.CreateObject("Scripting.FileSystemObject")
إذا كان fso.FolderExists(Server.MapPath(HtmlFolder)) إذن
آخر
fso.CreateFolder(Server.MapPath(HtmlFolder))
نهاية إذا
' تعيين fout = fso.CreateTextFile(Server.MapPath(filepath),true)
'fout.WriteLine HtmlContent
'fout.إغلاق
خافت objFSO،adTypeText،adSaveCreateOverWrite،Charsett،objAdoStream
تشارسيت = "utf-8"
تعيين objAdoStream = Server.CreateObject("ADODB.Stream")
نص نوع الإعلان = 2
AdSaveCreateOverWrite = 2
objAdoStream.Type = adTypeText
objAdoStream.Open
objAdoStream.Charset = Charsett
objAdoStream.WriteText(HtmlContent)
objAdoStream.SaveToFile Server.MapPath(filepath),2
objAdoStream.Close
النهاية الفرعية
'/************************
'/ حذف ملف HTML
'/************************
Htmldel الفرعي العام ()
مسار الملف الخافت، fso
filepath = HtmlFolder&"/"&HtmlFilename
تعيين fso = CreateObject("Scripting.FileSystemObject")
إذا كان fso.FileExists(Server.MapPath(filepath)) إذن
fso.DeleteFile(Server.mappath(مسار الملف))
نهاية إذا
تعيين fso = لا شيء
إنهاء
فئة النهاية
الفرعية
من أجل السماح للجميع بالتعلم بشكل أفضل، دعونا نعطي مثالا محددا:
لدينا عنوان موقع ويب http://www.downcodes.com/
ونريد إنشاء ملف html ثابت من صفحته الرئيسية، وهو
default.asp قم بإنشائه: makeindex.asp
<!--#include file="function_class.asp"-->
<%
مؤشر خافتhtmlstr
Indexhtmlstr=GetURL(" http://www.downcodes.com/default.asp ")
اسم ملف الفهرس الخافت
اسم ملف الفهرس = "index.htm"
actionstat خافتة
إذا كان len(indexhtmlstr) <200 إذن
Acti&indexfilename&"واجه خطأ "&indexhtmlstr&""
آخر
خافت myhtml
set myhtml= new Htmlmaker
myhtml.foldename = "../.."
myhtml.Filename = اسم ملف الفهرس
myhtml.Htmldel
myhtml.Htmlstr = Indexhtmlstr
myhtml.Htmlmake
تعيين myhtml=لا شيء
النشاط&اسم الملف&"الملف"
نهاية إذا
استجابة. كتابة الإجراء
%>
يتضمن محتوى الملف function_class.asp بشكل أساسي الوظائف المذكورة أعلاه والفئة التي تنشئ الملف!
قم بتشغيل makeindex.asp لإنشاء ملف htm!