Страница 1 использует Msxml2.ServerXMLHTTP для захвата веб-содержимого. Страница 2 использует ADODB.Stream для записи захваченного содержимого в файл. Страница 3 дает конкретный пример. Любой, кто знает asp, должен знать, что asp — это язык сценариев, который интерпретирует и выполняет. , а эффективность выполнения программ-скриптов часто бывает очень низкой. Если количество посещений сайта относительно велико, сервер будет потреблять много ресурсов. В результате скорость доступа к сайту быстро падает. Решение — оптимизация. программа для повышения эффективности выполнения, а другой метод — регулярно генерировать статические html-файлы для часто посещаемых страниц веб-сайта, что может очень эффективно решить проблему скорости доступа. Конечно, предполагается, что скорость вашего сервера не очень низкая. , в противном случае это не будет работать, несмотря ни на что. Ниже я представляю метод использования компонента Msxml2.ServerXMLHTTP для получения статической веб-страницы, которую вы хотите создать, а затем с помощью fso или ado для записи файла. Следует отметить, что во всех примерах в этой статье используется кодировка utf -8. Если она изменена на gb2312, необходимо изменить соответствующие атрибуты. Сначала введите следующую функцию:
<!--'По соответствующим вопросам посетите http://www.downcodes.com.
Функция GetURL(URL)
'Загрузить основную функцию
константный TimeInterval=60
'Установить временной интервал
'Если время загрузки очень медленное, напишите его как 120 секунд
'Ответ.LCID=2052
константа lResolve=6
'Тайм-аут разрешения доменного имени, секунды
константа lConnect=6
'Тайм-аут сайта подключения, секунды
константа lSend=6
'Таймаут отправки запроса данных, секунды
константа lReceive=40
'Таймаут загрузки данных, секунды
при ошибке возобновить Далее
Тусклый http
Установите http = Server.CreateObject("Msxml2.ServerXMLHTTP")
http.setTimeouts lResolve*1000,lConnect*1000,lSend*1000,lReceive*1000
http.Открыть «GET»,URL,False
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=СохранитьФайл()
Конец, если
установить http=ничего
Конечная функция
-->
Основная функция — захватить содержимое файла веб-страницы параметра адреса. Используйте метод varia=GetURL(" http://www.downcodes.com "). Если это локальный тестовый адрес, вы можете записать его. как http://localhost/default.asp и используйте эту функцию. Следует отметить, что атрибут Response.LCID=2052 не поддерживается в Windows Server 2000, но это не является большой проблемой и может использоваться обычным образом, если оно закомментировано! Также есть некоторые атрибуты тайм-аута, которые можно настроить по мере необходимости, но будьте осторожны и не устанавливайте слишком короткое время, иначе, если файл большой или скорость доступа к адресу низкая, сканирование может завершиться неудачно! нам использовать эту функцию для сканирования содержимого файла веб-страницы, который вы хотите создать. Сохраните содержимое в переменной и дождитесь записи в файл.
Этот класс приведен ниже, который используется для записи содержимого, только что захваченного функцией, в соответствующий файл, и все готово. Непосредственно сгенерируйте веб-страницу, которую хотите создать, это очень удобно и не требует изменения. исходный файл!
Class Htmlmaker
'Пожалуйста, задавайте соответствующие вопросы. См. http://www.downcodes.com.
'/************************
'/Инструкции по настройке свойства
'/foldename "имя папки"
'/ Если не установлено, имя папки в формате времени [год, месяц, день] будет автоматически сгенерировано
'/ Filename "Имя файла" (включая суффиксы и суффиксы)
'/ Если не установлено, имя файла в формате времени [часы, минуты, секунды] будет автоматически сгенерировано с суффиксом .html
'/ Htmlstr "Содержимое сгенерированного кода"
'/************************
Частное HtmlFolder, HtmlFilename, HtmlContent
Открытое свойство letfoldename(str)
HtmlFolder=str
Конечное свойство
Открытое свойство let Filename(str)
HtmlFilename=str
Конечное свойство
Публичное свойство let Htmlstr(str)
HtmlContent=str
Конец свойства
'/************************
'/Функция даты преобразования имени файла
'/***********************
Частная функция Datename1(timestr)
тусклый с_год, с_месяц, с_день
s_year = год (время)
если len(s_year)=2, то s_year="20"&s_year
s_month=месяц(timestr)
если s_month<10, то s_month="0"&s_month
s_day=день(время)
если s_day<10, то s_day="0"&s_day
Datename1=s_year & s_месяц & s_день
Конечная функция
Частная функция Datename2(timestr)
дим с_час, с_минута, с_сс
s_hour=час(timestr)
если s_hour<10, то s_hour="0"&s_hour
s_минута = минута (время)
если s_минута<10, то s_минута="0"&s_минута
s_ss = секунда (время)
если s_ss<10, то s_ss="0"&s_ss
Имя_даты2 = с_час & с_минута & с_сс
Конечная функция
'/***************************
'/ инициализация
'/***********************
Частный подкласс_initialize()
HtmlFolder=Datename1 (сейчас)
HtmlFilename=Datename2(сейчас)&".html"
HTMLC
Завершить подчастный
подкласс class_terminate()
Конец субтитра
'/************************
'/Генерация HTML-файла
'/**********************
Public Sub Htmlmake()
'При ошибке возобновить далее
тусклый путь к файлу, fso, fout
путь к файлу = 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.close
dim objFSO, adTypeText, adSaveCreateOverWrite, Charsett, objAdoStream
Чарсетт = "utf-8"
set objAdoStream = Server.CreateObject("ADODB.Stream")
ТипобъявленияТекст = 2
adSaveCreateOverWrite = 2
objAdoStream.Type = adTypeText
objAdoStream.Open
objAdoStream.Charset = Чарсетт
objAdoStream.WriteText(HtmlContent)
objAdoStream.SaveToFile Server.MapPath(путь к файлу),2
objAdoStream.Close
Конец подписки
'/************************
'/Удалить HTML-файл
'/************************
Публичная подпрограмма Htmldel()
тусклый путь к файлу, fso
путь к файлу = HtmlFolder&"/"&HtmlFilename
Установите fso = CreateObject("Scripting.FileSystemObject")
если fso.FileExists(Server.MapPath(путь к файлу)) то
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 ")
тусклое имя индексного файла
indexfilename="index.htm"
тусклый экшнстат
если len(indexhtmlstr) <200, то
Acti&indexfilename&"обнаружила ошибку "&indexhtmlstr&""
еще
тусклый мойhtml
установить myhtml= новый Htmlmaker
myhtml.foldename = "../.."
myhtml.Filename = индексное имя файла
myhtml.Htmldel
myhtml.Htmlstr = индексhtmlstr
myhtml.Htmlmake
установить myhtml=ничего
acti&имя_индексного_файла&"файл"
конец, если
ответ.запись actionstat
%>
Содержимое файла function_class.asp в основном включает в себя приведенные выше функции и класс, создающий файл!
Запустите makeindex.asp, чтобы сгенерировать файл htm!