เพจ 1 ใช้ Msxml2.ServerXMLHTTP เพื่อบันทึกเนื้อหาเว็บ เพจ 2 ใช้ ADODB.Stream เพื่อเขียนเนื้อหาที่บันทึกไว้ลงในไฟล์ เพจ 3 ให้ตัวอย่างเฉพาะเจาะจง ทุกคนที่รู้ asp ควรรู้ว่า asp เป็นภาษาสคริปต์ที่ตีความและดำเนินการ และประสิทธิภาพการทำงานของโปรแกรมสคริปต์มักจะต่ำมาก หากจำนวนการเข้าชมไซต์ค่อนข้างสูง เซิร์ฟเวอร์จะใช้ทรัพยากรจำนวนมาก ผลลัพธ์ก็คือ ความเร็วในการเข้าถึงไซต์จะลดลงอย่างรวดเร็ว วิธีแก้ปัญหาคือ ปรับให้เหมาะสม โปรแกรมเพื่อปรับปรุงประสิทธิภาพการดำเนินการ และอีกวิธีหนึ่งคือการสร้างไฟล์ html แบบคงที่สำหรับหน้าเว็บที่มีการเข้าชมสูงเป็นประจำ ซึ่งสามารถแก้ไขปัญหาความเร็วการเข้าถึงได้อย่างมีประสิทธิภาพมาก แน่นอนว่าความเร็วของเซิร์ฟเวอร์ของคุณไม่ได้ช้ามาก ไม่อย่างนั้นมันจะไม่ทำงานไม่ว่าอะไรก็ตาม ด้านล่างนี้ฉันแนะนำวิธีการใช้คอมโพเนนต์ Msxml2.ServerXMLHTTP เพื่อดึงหน้าเว็บแบบคงที่ที่คุณต้องการสร้าง จากนั้นใช้ fso หรือ ado เพื่อเขียนไฟล์ ควรสังเกตว่าตัวอย่างในบทความนี้ทั้งหมดใช้การเข้ารหัส utf -8 หากเปลี่ยนเป็น gb2312 จะต้องแก้ไขแอตทริบิวต์ที่เกี่ยวข้องก่อนอื่น ให้ฟังก์ชันต่อไปนี้:
<!--'สำหรับคำถามที่เกี่ยวข้อง โปรดไปที่ http://www.downcodes.com
Function GetURL(URL)
'ดาวน์โหลดฟังก์ชั่นหลัก
constช่วงเวลา=60
'กำหนดช่วงเวลา
'หากเวลาในการดาวน์โหลดช้ามาก ให้เขียนเป็น 120 วินาที'
'การตอบสนอง LCID=2052
const lResolve=6
'การหมดเวลาชื่อโดเมนการแก้ไข วินาที
const lConnect=6
'ไซต์การเชื่อมต่อหมดเวลา วินาที'
const lส่ง=6
'หมดเวลาส่งคำขอข้อมูล วินาที'
const lรับ=40
'ดาวน์โหลดข้อมูลหมดเวลา วินาที'
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ถัดไป
http.ติ่มซำ
ตั้งค่า http = Server.CreateObject("Msxml2.ServerXMLHTTP")
http.setTimeouts lแก้ไข*1,000,lเชื่อมต่อ*1,000,lส่ง*1,000,lรับ*1,000
http.Open "GET",URL,False
http.ส่ง
เลือกกรณี http.readyState
กรณีที่ 0
GetURL = "การเริ่มต้นวัตถุล้มเหลว"
ผิดพลาด.เคลียร์
ตั้งค่า http=nothing
ออกจากฟังก์ชัน
กรณีที่ 1
GetURL="การหมดเวลาการวิเคราะห์ชื่อโดเมน/การหมดเวลาของไซต์การเชื่อมต่อ"
ผิดพลาด.เคลียร์
ตั้งค่า http=nothing
ออกจากฟังก์ชัน
กรณีที่ 2
GetURL = "การร้องขอข้อมูลหมดเวลา เซิร์ฟเวอร์ผิดพลาดหรือไม่"
ผิดพลาด.เคลียร์
ตั้งค่า http=nothing
ออกจากฟังก์ชัน
กรณีที่ 3
GetURL = "การหมดเวลาการดาวน์โหลดข้อมูล / การรอผลตอบรับที่หมดเวลา"
ผิดพลาด.เคลียร์
ตั้งค่า http=nothing
ออกจากฟังก์ชัน
กรณีที่ 4
'ดาวน์โหลดสำเร็จ
สิ้นสุดการเลือก
ถ้า http.status<>200 แล้ว
GetURL="ดาวน์โหลดล้มเหลว"&Err.description
ผิดพลาด.เคลียร์
ตั้งค่า http=nothing
ออกจากฟังก์ชัน
สิ้นสุด ถ้า
ถ้า http.status="200" แล้ว
GetURL=http.ResponseText
'GetURL=บันทึกไฟล์()
สิ้นสุดถ้า
ตั้งค่า http=nothing
ฟังก์ชันสิ้นสุด
-
หน้าที่หลักคือการจับเนื้อหาของไฟล์หน้าเว็บของพารามิเตอร์ที่อยู่ ใช้เมธอด varia=GetURL(" http://www.downcodes.com ") หากเป็นที่อยู่ทดสอบในเครื่อง คุณสามารถเขียนได้ เป็น http://localhost/default.asp และใช้ฟังก์ชันนี้ โปรดทราบว่าไม่รองรับแอตทริบิวต์ Response.LCID=2052 ใน Windows Server 2000 แต่ก็ไม่ใช่ปัญหาใหญ่และสามารถใช้งานได้ตามปกติตราบเท่าที่ มีการใส่ความคิดเห็นไว้ นอกจากนี้ยังมีแอตทริบิวต์การหมดเวลาบางอย่างที่สามารถปรับแต่งได้ตามต้องการ แต่ระวังอย่าตั้งเวลาให้สั้นเกินไป มิฉะนั้น หากไฟล์มีขนาดใหญ่หรือความเร็วในการเข้าถึงที่อยู่ช้า การรวบรวมข้อมูลอาจล้มเหลว เพื่อใช้ฟังก์ชันนี้เพื่อรวบรวมข้อมูลเนื้อหาของไฟล์หน้าเว็บที่คุณต้องการสร้าง จัดเก็บเนื้อหาไว้ในตัวแปรและรอที่จะเขียนลงในไฟล์ !
คลาสนี้ระบุไว้ด้านล่าง ซึ่งใช้ในการเขียนเนื้อหาที่เพิ่งบันทึกโดยฟังก์ชันลงในไฟล์ที่เกี่ยวข้อง และคุณทำเสร็จแล้ว! สร้างหน้าเว็บที่คุณต้องการสร้างโดยตรง สะดวกมากและไม่จำเป็นต้องแก้ไข ไฟล์ต้นฉบับ!
Class Htmlmaker
'โปรดถามคำถามที่เกี่ยวข้อง ดู http://www.downcodes.com
-
'/คำแนะนำในการตั้งค่าคุณสมบัติ
'/foldename "ชื่อโฟลเดอร์"
'/ หากไม่ได้ตั้งค่า ชื่อโฟลเดอร์ในรูปแบบเวลา [ปี, เดือน, วัน] จะถูกสร้างขึ้นโดยอัตโนมัติ
'/ ชื่อไฟล์ "ชื่อไฟล์" (รวมถึงส่วนต่อท้ายและส่วนต่อท้าย)
'/ หากไม่ได้ตั้งค่า ชื่อไฟล์ในรูปแบบเวลา [ชั่วโมง นาที วินาที] จะถูกสร้างขึ้นโดยอัตโนมัติ โดยมีคำต่อท้าย .html
'/ Htmlstr "เนื้อหาโค้ดที่สร้าง"
-
HtmlFolder ส่วนตัว, HtmlFilename, HtmlContent
คุณสมบัติสาธารณะให้ foldename (str)
HtmlFolder=str
คุณสมบัติสุดท้าย
ทรัพย์สินสาธารณะให้ชื่อไฟล์ (str)
HtmlFilename=str
คุณสมบัติสุดท้าย
ทรัพย์สินสาธารณะให้ Htmlstr(str)
HtmlContent=str
สิ้นสุดคุณสมบัติ
'/************************
'/ฟังก์ชันวันที่แปลงชื่อไฟล์
'/************************
ฟังก์ชั่นส่วนตัว Datename1 (timestr)
สลัว s_ปี,s_เดือน,s_วัน
s_year=ปี(timestr)
ถ้า len(s_year)=2 แล้ว s_year="20"&s_year
s_เดือน=เดือน(timestr)
ถ้า s_month<10 แล้ว s_month="0"&s_month
s_day=วัน(timestr)
ถ้า s_day<10 แล้ว s_day="0"&s_day
Datename1=s_year & s_เดือน & s_day
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นส่วนตัว Datename2 (timestr)
สลัว s_ชั่วโมง,s_นาที,s_ss
s_hour=ชั่วโมง(timestr)
ถ้า s_hour<10 ดังนั้น s_hour="0"&s_hour
s_นาที=นาที(timestr)
ถ้า s_minute<10 แล้ว s_minute="0"&s_minute
s_ss=วินาที(timestr)
ถ้า s_ss<10 ดังนั้น s_ss="0"&s_ss
Datename2 = s_ชั่วโมง & s_นาที & s_ss
สิ้นสุดฟังก์ชัน
'/***************************
'/ การเริ่มต้น
'/************************
class_initialize ส่วนตัวย่อย ()
HtmlFolder=Datename1(ตอนนี้)
HtmlFilename=Datename2(ตอนนี้)&".html"
HtmlC
สิ้นสุด
ย่อยส่วนตัวย่อย class_terminate()
จบหมวดย่อย
-
'/การสร้างไฟล์ Html
'/************************
Htmlmake ย่อยสาธารณะ ()
'เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป'
เส้นทางไฟล์สลัว fso fout
filepath = HtmlFolder&"/"&HtmlFilename
ตั้งค่า fso = Server.CreateObject("Scripting.FileSystemObject")
ถ้า fso.FolderExists(Server.MapPath(HtmlFolder)) จากนั้น
อื่น
fso.CreateFolder (เซิร์ฟเวอร์ 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.เปิด
objAdoStream.Charset = ชาร์เซต
objAdoStream.WriteText (เนื้อหา Html)
objAdoStream.SaveToFile Server.MapPath (พาธไฟล์),2
objAdoStream ปิด
จบย่อย
'/************************
'/ลบไฟล์ Html'
-
Htmldel ย่อยสาธารณะ ()
เส้นทางไฟล์สลัว fso
filepath = HtmlFolder&"/"&HtmlFilename
ตั้งค่า fso = CreateObject("Scripting.FileSystemObject")
ถ้า fso.FileExists(Server.MapPath(filepath)) แล้ว
fso.DeleteFile (เซิร์ฟเวอร์ 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
ตั้งค่า myhtml= new Htmlmaker
myhtml.foldename = "../.."
myhtml.Filename = ชื่อไฟล์ดัชนี
myhtml.Htmldel
myhtml.Htmlstr = ดัชนีhtmlstr
myhtml.Htmlmake
ตั้งค่า myhtml=nothing
acti&ชื่อไฟล์ดัชนี&"ไฟล์"
สิ้นสุดถ้า
การตอบสนอง เขียน actionstat
-
เนื้อหาของไฟล์ function_class.asp ส่วนใหญ่ประกอบด้วยฟังก์ชันที่ให้ไว้ข้างต้นและคลาสที่สร้างไฟล์!
เรียกใช้ makeindex.asp เพื่อสร้างไฟล์ htm!