У нас есть следующий классический код asp, который читается из XML-файла, он показывает низкую производительность при наличии более 10 одновременных запросов на эту страницу, может кто-то выяснить проблему производительности в этом коде (мы знаем, одна из проблем, которая с помощью FileSystemObject, но у нас нет альтернативы для него!):Как оптимизировать этот код, который читается из xml-файла
set filesys=server.CreateObject("Scripting.FileSystemObject")
if filesys.FileExists(sourcefile) then
set source = Server.CreateObject("Msxml2.DOMDocument")
source.validateOnParse = false
source.resolveExternals = false
source.preserveWhiteSpace = false
source.load(sourcefile)
If source.ParseError.errorCode <> 0 Then
str_head=source.selectSingleNode("/LIST/ITEM/NEWSITEM/HEADLINE//").text
str_by=source.selectSingleNode("//LIST//ITEM//NEWSITEM//PROVIDER//").text
News_date_orig = source.selectSingleNode("/LIST/ITEM/NEWSITEM/CREATED//").text
str_date= formatdatetime(source.selectSingleNode("//LIST//ITEM//NEWSITEM//CREATED//").text,1)
set bodyNode=source.selectSingleNode("/LIST/ITEM/NEWSITEM//BODY//")
styleFile=Server.MapPath("/includes/xsl/template.xsl")
Set style = Server.CreateObject("Msxml2.DOMDocument")
style.validateOnParse = false
style.resolveExternals = false
style.preserveWhiteSpace = false
style.load(styleFile)
news_full = bodyNode.transformNode(style)
if len(news_full) < 10 then
news_full = str_abstract
end if
DiscriptionKeyWord = stripHTMLtags(news_full)
DiscriptionKeyWord=StrCutOff(DiscriptionKeyWord, 200, "...")
headerTitle=str_head
Set style=nothing
Set source = nothing
end if
set filesys= nothing
Ниже функция stripHTMLtags:
Function stripHTMLtags(HTMLstring)
Set RegularExpressionObject = New RegExp
With RegularExpressionObject
.Pattern = "<[^>]+>"
.IgnoreCase = True
.Global = True
End With
stripHTMLtags = RegularExpressionObject.Replace(HTMLstring, "")
Set RegularExpressionObject = nothing
End Function
UPDATE: Я поставил таймер, чтобы показать время выполнения для функции, которая читает xml-файл, и обнаружил, что он занимает около 3 секунд на рабочем сервере, а на моем ПК занимает менее 1 секунды! Что это значит ?! Я потерялся.
Я не думаю, что stripHTMLtags причина, здесь его тело: Функция stripHTMLtags (HTMLString) \t Set RegularExpressionObject = New RegExp \t С RegularExpressionObject \t .Pattern = "<[^>] +>" \t .IgnoreCase = True \t. Global = True \t End With \t stripHTMLtags = RegularExpressionObject.Replace (HTMLString, "") \t Set RegularExpressionObject = ничего End Function – Cassini
@Cassini: Комментарии не являются хорошим местом, чтобы поместить код. Измените свой вопрос и включите в него код для 'stripHTMLTags'. – AnthonyWJones
Отредактировано ... как вы можете видеть, это использование выражения регулятора. – Cassini