Seite 1 verwendet Msxml2.ServerXMLHTTP zum Erfassen von Webinhalten. Seite 2 verwendet ADODB.Stream, um den erfassten Inhalt in eine Datei zu schreiben. Seite 3 gibt ein konkretes Beispiel, das Asp eine Skriptsprache ist, die interpretiert und ausführt. , und die Ausführungseffizienz von Skriptprogrammen ist oft sehr gering. Wenn die Anzahl der Besuche auf der Site relativ hoch ist, wird der Server viele Ressourcen verbrauchen. Das Ergebnis ist, dass die Geschwindigkeit des Site-Zugriffs schnell abnimmt Das Programm soll die Ausführungseffizienz verbessern, und eine andere Methode besteht darin, regelmäßig statische HTML-Dateien für häufig besuchte Seiten auf der Website zu generieren. Dies kann das Problem der Zugriffsgeschwindigkeit natürlich sehr effektiv lösen Andernfalls funktioniert es nicht, egal was passiert. Im Folgenden stelle ich eine Methode vor, mit der Sie die statische Webseite, die Sie generieren möchten, verwenden und sie dann mit fso oder ado schreiben können Es ist zu beachten, dass alle Beispiele in diesem Artikel die utf-8-Codierung verwenden. Wenn sie in gb2312 geändert wird, müssen die entsprechenden Attribute zuerst geändert werden:
<!--'Bei verwandten Fragen besuchen Sie bitte http://www.downcodes.com
Funktion GetURL(URL)
'Hauptfunktion herunterladen
const TimeInterval=60
'Zeitintervall einstellen
„Wenn die Downloadzeit sehr langsam ist, geben Sie sie als 120 Sekunden an.“
'Response.LCID=2052
const lResolve=6
'Zeitüberschreitung bei der Auflösung des Domänennamens, Sekunden
const lConnect=6
'Zeitüberschreitung der Verbindungsseite, Sekunden
const lSend=6
'Timeout für Datenanforderung senden, Sekunden
const lReceive=40
'Zeitüberschreitung beim Herunterladen von Daten, Sekunden
Bei Fehler fortsetzen Weiter
Verdunkeln Sie http
Setze http = Server.CreateObject("Msxml2.ServerXMLHTTP")
http.setTimeouts lResolve*1000,lConnect*1000,lSend*1000,lReceive*1000
http.Öffnen Sie „GET“,URL,False
http.Senden
Wählen Sie Fall http.readyState aus
Fall 0
GetURL="Objektinitialisierung fehlgeschlagen"
Err.Clear
setze http=nichts
Exit-Funktion
Fall 1
GetURL="Zeitüberschreitung bei der Analyse des Domänennamens/Zeitüberschreitung der Verbindungsseite"
Err.Clear
setze http=nichts
Exit-Funktion
Fall 2
GetURL="Zeitüberschreitung bei der Datenanforderung. Ist der Server fehlerhaft?"
Err.Clear
setze http=nichts
Exit-Funktion
Fall 3
GetURL="Zeitüberschreitung beim Herunterladen der Daten/Zeitüberschreitung beim Warten auf Feedback"
Err.Clear
setze http=nichts
Exit-Funktion
Fall 4
'Download erfolgreich
Endauswahl
Wenn http.status<>200 dann
GetURL="Download fehlgeschlagen"&Err.description
Err.Clear
setze http=nichts
Exit-Funktion
ENDE WENN
Wenn http.status="200", dann
GetURL=http.ResponseText
'GetURL=SaveFile()
Ende wenn
setze http=nichts
Funktion beenden
->
Die Hauptfunktion besteht darin, den Inhalt der Webseitendatei des Adressparameters zu erfassen. Verwenden Sie die Methode varia=GetURL(" http://www.downcodes.com "). Wenn es sich um eine lokale Testadresse handelt, können Sie sie schreiben als http://localhost/default.asp und verwenden Sie diese Funktion. Es ist zu beachten, dass das Attribut Response.LCID=2052 unter Windows Server 2000 nicht unterstützt wird, aber kein großes Problem darstellt und normal verwendet werden kann Es ist auskommentiert! Es gibt auch einige Timeout-Attribute, die nach Bedarf angepasst werden können. Achten Sie jedoch darauf, die Zeit nicht zu kurz einzustellen. Andernfalls kann das Crawlen fehlschlagen, wenn die Datei groß ist oder die Zugriffsgeschwindigkeit auf die Adresse langsam ist Verwenden Sie diese Funktion, um den Inhalt der Webseitendatei zu crawlen, die Sie generieren möchten. Speichern Sie den Inhalt in einer Variablen und warten Sie, bis er in die Datei geschrieben wird.
Diese Klasse wird unten angegeben und wird verwendet, um den gerade von der Funktion erfassten Inhalt in die entsprechende Datei zu schreiben. Generieren Sie direkt die Webseite, die Sie generieren möchten. Dies ist sehr praktisch und erfordert keine Änderungen! Originaldatei!
Klasse Htmlmaker
'Bitte stellen Sie verwandte Fragen. Siehe http://www.downcodes.com
'/*************************
'/Anweisungen zur Eigenschaftseinstellung
'/foldename „Ordnername“
'/ Wenn nicht festgelegt, wird automatisch ein Ordnername im Zeitformat [Jahr, Monat, Tag] generiert.
'/ Dateiname „Dateiname“ (einschließlich Suffixe und Suffixe)
'/ Wenn nicht festgelegt, wird automatisch ein Dateiname im Zeitformat [Stunden, Minuten, Sekunden] mit dem Suffix .html generiert.
'/ Htmlstr „Generierter Codeinhalt“
'/*************************
Private HtmlFolder, HtmlFilename, HtmlContent
Öffentliche Eigenschaft let Foldename(str)
HtmlFolder=str
End-Eigenschaft
Öffentliche Eigenschaft let Filename(str)
HtmlFilename=str
End-Eigenschaft
Öffentliches Eigentum let Htmlstr(str)
HtmlContent=str
End-Eigenschaft
'/****************************
'/Datumsfunktion für die Dateinamenkonvertierung
'/*************************
Private Function Datename1(timestr)
dim s_year,s_month,s_day
s_year=year(timestr)
wenn len(s_year)=2 dann s_year="20"&s_year
s_month=Monat(timestr)
Wenn s_month<10, dann s_month="0"&s_month
s_day=Tag(timestr)
Wenn s_day<10, dann s_day="0"&s_day
Datenname1=s_year & s_month & s_day
Endfunktion
Private Funktion Datenname2(timestr)
dimmen s_hour,s_minute,s_ss
s_hour=Stunde(timestr)
Wenn s_hour<10, dann s_hour="0"&s_hour
s_minute=minute(timestr)
Wenn s_minute<10, dann s_minute="0"&s_minute
s_ss=Sekunde(Zeitstr)
Wenn s_ss<10, dann s_ss="0"&s_ss
Datenname2 = s_hour & s_minute & s_ss
Endfunktion
'/*************************
'/ Initialisierung
'/*************************
Private Sub class_initialize()
HtmlFolder=Datenname1(jetzt)
HtmlFilename=Datenname2(now)&".html"
HTMLC
End Sub
Private Sub class_terminate()
Sub beenden
'/*************************
'/HTML-Dateigenerierung
'/*************************
Public Sub Htmlmake()
„Bei Fehler Weiter fortsetzen.“
Dateipfad,fso,fout dimmen
filepath = HtmlFolder&"/"&HtmlFilename
Setze fso = Server.CreateObject("Scripting.FileSystemObject")
Wenn fso.FolderExists(Server.MapPath(HtmlFolder)) dann
Anders
fso.CreateFolder(Server.MapPath(HtmlFolder))
Ende wenn
' Set fout = fso.CreateTextFile(Server.MapPath(filepath),true)
' fout.WriteLine HtmlContent
'fout.close
dim objFSO,adTypeText,adSaveCreateOverWrite,Charsett,objAdoStream
Charsett = „utf-8“
set objAdoStream = Server.CreateObject("ADODB.Stream")
adTypeText = 2
adSaveCreateOverWrite = 2
objAdoStream.Type = adTypeText
objAdoStream.Open
objAdoStream.Charset = Charsett
objAdoStream.WriteText(HtmlContent)
objAdoStream.SaveToFile Server.MapPath(filepath),2
objAdoStream.Close
End Sub
'/***********************
'/Html-Datei löschen
'/*************************
Öffentliches Sub-Htmldel()
Dateipfad dimmen,fso
filepath = HtmlFolder&"/"&HtmlFilename
Setze fso = CreateObject("Scripting.FileSystemObject")
if fso.FileExists(Server.MapPath(filepath)) dann
fso.DeleteFile(Server.mappath(Dateipfad))
Ende wenn
Setze fso = nichts
End-Sub-
End-Klasse
Damit jeder besser lernen kann, geben wir ein konkretes Beispiel:
zunächst
eine statische HTML-Datei aus der Homepage generieren
Erstellen Sie es. Datei: makeindex.asp
<!--#include file="function_class.asp"-->
<%
dim indexhtmlstr
indexhtmlstr=GetURL(" http://www.downcodes.com/default.asp ")
dim indexfilename
indexfilename="index.htm"
Aktionsstatus dimmen
wenn len(indexhtmlstr) <200 dann
Acti&indexfilename&"Fehler „&indexhtmlstr&“ aufgetreten“
anders
dimme mein HTML
setze myhtml= new Htmlmaker
myhtml.foldename = "../.."
myhtml.Filename = Indexdateiname
myhtml.Htmldel
myhtml.Htmlstr = indexhtmlstr
myhtml.Htmlmake
setze myhtml=nichts
acti&indexfilename&"file"
Ende wenn
Response.write Actionstat
%>
Der Inhalt der Datei function_class.asp umfasst hauptsächlich die oben angegebenen Funktionen und die Klasse, die die Datei generiert!
Führen Sie makeindex.asp aus, um die HTM-Datei zu generieren!