Большинство приложений Active Server Pages (ASP) создают данные HTML-формата, представленные пользователям посредством конкатенации строки. В этой статье сравниваются несколько способов создания этого потока данных HTML, и в некоторых случаях некоторые методы превосходят других в производительности. В этой статье предполагается, что у вас уже есть некоторые знания о программировании ASP и Visual Basic.
При написании страницы ASP разработчик фактически создает форматированный текстовый поток, который записывается веб -клиенту через объект ответа, предоставленный ASP. Существует множество способов создания этого текстового потока, и выбранный вами метод окажет большое влияние на производительность и масштабируемость вашего веб -приложения. Много раз, когда я помогал клиентам оптимизировать производительность их веб -приложений, я обнаружил, что одним из наиболее эффективных способов является изменение способа создания потоков HTML. Эта статья представит несколько общих методов и проверяет их влияние на производительность простой страницы ASP.
Многие разработчики ASP следуют хорошим принципам разработки программного обеспечения и максимально модулизуют свой код. Этот дизайн обычно используется, включают файлы, которые содержат функции, которые форматируют конкретные прерывистые части страницы. Вывод строки этих функций (обычно код таблицы HTML) может создать полную страницу через различные комбинации. Некоторые разработчики улучшили этот подход, перемещая эти функции HTML в компоненты Visual Basic Com, надеясь воспользоваться дополнительной производительностью, предоставленной скомпилированным кодом.
Хотя этот подход проектирования хорош, метод, используемый для создания строк, которые составляют эти прерывистые компоненты HTML -кода, окажет большое влияние на производительность и масштабируемость веб -сайта, независимо от того, выполняется ли фактическая операция в файле ASP или в компоненте Visual Basic Com.
Пожалуйста, смотрите следующий фрагмент кода функции writehtml. Параметр с именованными данными - это просто массив строк, содержащих некоторые данные, которые будут отформатированы в табличную структуру (например, данные, возвращаемые из базы данных).
Function writehtml (data) dim nrepfor nrep = 0 до 99 shtml = shtml & vbcrlf _ & "<tr> <td>" & (nrep + 1) & "</td> <td>" _ & data (0, nrep) & "</td> <td>" _ & data (1, nrep) & "</td> <td>" Data (2, Nrep) & "</td> <td>" _ & data (2, nrep) & "</td> <td>" _ & data (3, nrep) & "</td> <td>" _ & data (4, nrep) & "</td> <td>" _ & data (5, nrep) & "</td> <td>" "</Td> </tr>" nextwritehtml = shtmlend function
Это общий метод, используемый многими разработчиками ASP и Visual Basic при создании HTML -кода. Текст, содержащийся в переменной SHTML, возвращается в вызову и записывается клиенту с использованием response.write. Конечно, это также может быть выражено как аналогичный код, который непосредственно внедряет страницу, которая не содержит функции writehtml. Проблема с этим кодом заключается в том, что типы строковых данных (BSTR или основные строки), используемые ASP и Visual Basic, не могут фактически изменить длину. Это означает, что всякий раз, когда изменяется длина строки, исходное представление строки в памяти будет повреждено, и будет создано новое представление, содержащее новые строковые данные: это увеличит работу распределения памяти и сделки с памятью. Конечно, ASP и Visual Basic решили это для вас, поэтому фактические накладные расходы не появятся сразу. Распределение и неяртная память требует, чтобы базовый код времени выполнения разблокировал каждую выделенную блокировку, поэтому для этого требуется много накладных расходов. Эта проблема становится особенно очевидной, когда строки становятся большими и большими кусками памяти, должны быть распределены и разбираются в быстром и непрерывном образом, как это происходит во время крупной конкатенации струны. Хотя эта проблема мало влияет на однопользовательскую среду, она может вызвать серьезные проблемы с производительностью и масштабируемостью в средах серверов (например, приложения ASP, работающие на веб-сервере).