Эта программа сокращает объем операций чтения базы данных за счет использования функции ASP FSO. После тестирования это может снизить нагрузку на сервер на 90%. Скорость доступа к страницам в основном такая же, как и у статических страниц. Скопируйте код кода следующим образом:
<%@LANGUAGE=КОДОВАЯ СТРАНИЦА VBSCRIPT=65001%>
<% Response.CodePage=65001%>
<% Response.Charset=UTF-8 %>
<%
«Эта программа уменьшает объем операций чтения из базы данных, используя функциональность ASP FSO. После тестирования это может снизить нагрузку на сервер на 90%. Скорость доступа к страницам в основном такая же, как и у статических страниц.
«Как использовать: разместите файл на веб-сайте, а затем используйте include, чтобы указать на него ссылку в первой строке файла, на который нужно сослаться.
'======================Область параметров====================== =====
DirName=cachenew/ 'Каталог, в котором сохраняются статические файлы, должен иметь / в конце. Не нужно создавать его вручную, программа создаст его автоматически.
TimeDelay=30 'Интервал времени обновления, единица измерения – минуты, например, 1440 минут – это 1 день. По истечении этого интервала сгенерированные статические файлы удаляются.
'=====================Основная область программы======================= ====
foxrax=Запрос(foxrax)
если фоксракс= тогда
ИмяФайла=GetStr()&.txt
ИмяФайла=ИмяКаталога&ИмяФайла
если tesfold(DirName)=false, то создайте папку, если она не существует.
createfold(Server.MapPath(.)&/&DirName)
конец, если
if ReportFileStatus(Server.MapPath(.)&/&FileName)=true then 'Если существует сгенерированный статический файл, прочитайте файл напрямую
Установите FSO=CreateObject(Scripting.FileSystemObject)
Тусклые файлы, LatCatch
Set Files=FSO.GetFile(Server.MapPath(FileName)) 'Определить файловый объект CatchFile
LastCatch=CDate(Files.DateLastModified)
Если DateDiff(n,LastCatch,Now())>TimeDelay then' превышает
Список = getHTTPPage (GetUrl())
ЗаписатьФайл(ИмяФайла)
Еще
Список=ЧитатьФайл(ИмяФайла)
Конец, если
Установить FSO = ничего
Ответ.Запись(Список)
Ответ.Конец()
еще
Список = getHTTPPage (GetUrl())
ЗаписатьФайл(ИмяФайла)
конец, если
конец, если
'=======================Функциональная область===================== = =====
'Получаем URL текущей страницы
Функция ПолучитьСтр()
'При ошибке возобновить далее
Dim strTemps
strTemps = strTemps & Request.ServerVariables(HTTP_X_REWRITE_URL)
GetStr = Server.URLEncode(strTemps)
Конечная функция
'Получить URL-адрес кэшированной страницы
Функция ПолучитьUrl()
При ошибке Возобновить Далее
Dim strTemp
Если LCase(Request.ServerVariables(HTTPS)) = выключено Тогда
стрТемп = http://
Еще
стрТемп = https://
Конец, если
strTemp = strTemp & Request.ServerVariables(SERVER_NAME)
Если Request.ServerVariables(SERVER_PORT) <> 80 Тогда
strTemp = strTemp & : & Request.ServerVariables(SERVER_PORT)
конец, если
strTemp = strTemp & Request.ServerVariables(URL)
Если Trim(Request.QueryString) <> Тогда
strTemp = strTemp & ? & Trim(Request.QueryString) & &foxrax=foxrax
еще
strTemp = strTemp & & & foxrax=foxrax
конец, если
GetUrl = стрТемп
Конечная функция
«Поймай страницу
Функция getHTTPPage(url)
Установите Mail1 = Server.CreateObject(CDO.Message)
URL-адрес Mail1.CreateMHTMLBody, 31
AA=Mail1.HTMLBody
Установить Mail1 = Ничего
getHTTPage=AA
'Установить получение = Server.CreateObject(Microsoft.Xmlhttp)
'Получение.Откройте GET,url,false,,
'Получение.Отправить
'getHTTPPage = Получение.ResponseBody
'Установить получение = Ничего
Конечная функция
SubWriteFile(путь к файлу)
тусклый стм
set stm=Server.CreateObject(adodb.stream)
stm.Type=2 'adTypeText, текстовые данные
stm.Mode=3 'adModeReadWrite, чтение и запись. Если этот параметр равен 2, будет сообщено об ошибке.
stm.Charset=utf-8
stm.Открыть
список stm.WriteText
stm.SaveToFile Server.MapPath(filePath),2 'adSaveCreateOverWrite, перезаписать, если файл существует
stm.Flush
stm.Закрыть
установить stm=ничего
Конец субтитра
Функция ReadFile(filePath)
тусклый стм
set stm=Server.CreateObject(adodb.stream)
stm.Type=1 'adTypeBinary, чтение двоичных данных
stm.Mode=3 'adModeReadWrite, здесь можно использовать только 3, остальные вызовут ошибки
stm.Открыть
stm.LoadFromFile Server.MapPath(filePath)
stm.Position=0 'Перемещаем указатель обратно в начальную точку
stm.Type=2 'Текстовые данные
stm.Charset=utf-8
ReadFile = stm.ReadText
stm.Закрыть
установить stm=ничего
Конечная функция
'Проверяем, существует ли файл
Функция ReportFileStatus(FileName)
установите fso = server.createobject(scripting.filesystemobject)
если fso.fileexists(FileName) = true, то
ReportFileStatus=истина
еще
ReportFileStatus = ложь
конец, если
установить fso=ничего
конечная функция
'Проверяем, существует ли каталог
функция tesfold(foname)
set fs=createobject(scripting.filesystemobject)
filepathjm=server.mappath(foname)
если fs.folderexists(filepathjm), то
тесфолд = Истина
еще
тесфолд = Ложь
конец, если
установить фс=ничего
конечная функция
'Создать каталог
subcreatefold (имя_фона)
set fs=createobject(scripting.filesystemobject)
fs.createfolder(имя_файла)
установить фс=ничего
конец субтитра
'Удалить файлы
function del_file(path) 'путь, путь к файлу содержит имя файла
set objfso = server.createobject(scripting.FileSystemObject)
'путь=Server.MapPath(путь)
if objfso.FileExists(path) then 'Если он существует, удалите его
objfso.DeleteFile(path) 'Удалить файл
еще
'response.write <script Language='Javascript'>alert('Файл не существует')</script>
конец, если
установить objfso = ничего
конечная функция
%>