A maioria dos aplicativos de páginas de servidor ativo (ASP) criam dados de formato HTML apresentados aos usuários por meio de concatenação da String. Este artigo compara várias maneiras de criar esse fluxo de dados HTML e, em certos casos, alguns métodos superam outros no desempenho. Este artigo pressupõe que você já tenha algum conhecimento de programação ASP e Visual Basic.
Ao escrever uma página ASP, o desenvolvedor realmente cria um fluxo de texto formatado que é gravado no cliente da web através do objeto de resposta fornecido pelo ASP. Existem várias maneiras de criar esse fluxo de texto, e o método que você escolher terá um grande impacto no desempenho e na escalabilidade do seu aplicativo da Web. Muitas vezes, quando ajudei os clientes a otimizar o desempenho de seus aplicativos da Web, descobri que uma das maneiras mais eficazes é mudar a maneira como os fluxos HTML são criados. Este artigo introduzirá várias técnicas comuns e testará seu impacto no desempenho de uma página ASP simples.
Muitos desenvolvedores da ASP seguem bons princípios de engenharia de software e modularizam seu código o máximo possível. Esse design geralmente usa inclui arquivos que contêm funções que formatam partes descontínuas específicas da página. A saída da string dessas funções (geralmente o código da tabela HTML) pode criar uma página completa através de várias combinações. Alguns desenvolvedores melhoraram essa abordagem, movendo essas funções HTML para os componentes do Visual Basic Com, na esperança de aproveitar o desempenho adicional fornecido pelo código compilado.
Embora essa abordagem de design seja boa, o método usado para criar strings que compõem esses componentes descontínuos de código HTML terão um grande impacto no desempenho e na escalabilidade do site, se a operação real é executada em um ASP incluir arquivo ou em um componente Com Componente Visual Basic.
Consulte o seguinte snippet de código da função WriteHTML. Um parâmetro chamado Data é apenas uma matriz de strings que contêm alguns dados a serem formatados em uma estrutura tabular (por exemplo, dados retornados de um banco de dados).
Função writehtml (dados) dim nrep para nrep = 0 a 99 shtml = shtml & vbcrlf _ & "<tr> <t> <td>" & (nrep + 1) & "</td> <td>" _ & data (0, nrep) & "</td> <td>" _ & dados (0, nrep) & "</td> <td>" _ & "dados (0, nrep) &" </td> <td> "_ e" e ". Data( 2, nRep ) & "</TD><TD>" _ & Data( 2, nRep ) & "</TD><TD>" _ & Data( 3, nRep ) & "</TD><TD>" _ & Data( 4, nRep ) & "</TD><TD>" _ & Data( 5, nRep ) & "</td> </tr>" nextWritehtml = função shtmlend
Este é um método comum usado por muitos desenvolvedores ASP e Visual Basic ao criar código HTML. O texto contido na variável shtml é devolvido ao código de chamada e gravado para o cliente usando a resposta.write. Obviamente, isso também pode ser expresso como um código semelhante que incorpora diretamente uma página que não contém a função WriteHTML. O problema com este código é que os tipos de dados da string (BSTR ou strings básicos) usados pelo ASP e Visual Basic não podem realmente alterar o comprimento. Isso significa que sempre que o comprimento da string mudar, a representação original da string na memória será corrompida e uma nova representação que contém os novos dados da string será criada: isso aumentará a operação de alocar memória e desalocatar a memória. Obviamente, asp e o Visual Basic resolveram isso para você, para que a sobrecarga real não apareça imediatamente. A alocação e a memória não alocada exigem que o código de tempo de execução básico desbloqueie cada bloqueio dedicado, por isso requer muita sobrecarga. Esse problema se torna particularmente evidente quando as cordas se tornam grandes e grandes de memória devem ser alocadas e desalocadas de maneira rápida e contínua, pois ocorre durante grande concatenação de cordas. Embora esse problema tenha pouco impacto em um ambiente de usuário único, ele pode causar sérios problemas de desempenho e escalabilidade em ambientes de servidores (por exemplo, aplicativos ASP em execução em um servidor da Web).