Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 31580|Resposta: 0

[Fonte] ASP.NET MVC5 é lançado usando o modo pré-compilado, melhorando a velocidade de carregamento e o desempenho da página

[Copiar link]
Postado em 2020-8-22 10:05:17 | | | |
Quando há muitas páginas em um projeto, o IIS inicia e o site fica muito lento quando você o abre pela primeira vez, porque o projeto não está pré-compilado no momento do lançamento, mas é compilado dinamicamente quando o usuário visita a página web. Se você quiser melhorar o desempenho do seu site existente e realizar verificação de erros, é necessário selecionar "Pré-compilar durante o lançamento" ao publicar seu projeto.

Introdução

Para projetos pequenos, publicar conforme as configurações padrão pode basicamente cumprir a operação normal: a primeira página é aberta em 56 segundos (dependendo da configuração do servidor), e a primeira abertura de outras páginas é basicamente concluída em 12 segundos, não a primeira abertura instantânea.

Quando as funções do projeto se tornam complexas e o número de arquivos aumenta, levará mais de 30 segundos para abrir a primeira página na primeira execução após a publicação, e cerca de 10 segundos para a primeira abertura de outras páginas, não para a primeira abertura instantânea.

Isso ocorre porque o projeto não está pré-compilado no momento do lançamento, mas é compilado dinamicamente quando o usuário acessa a página web e, uma vez que o pool de aplicações é reciclado ou os arquivos do projeto são alterados, ele será recompilado e passa por uma "primeira vez" lenta novamente, o que é intolerável.

Benefícios da pré-compilação

  • Desempenho. O código compilado é executado muito mais rápido do que linguagens de script como ECMAScript ou VBScript porque é uma representação mais próxima do código de máquina e não requer análise adicional.
  • Segurança. Código compilado é mais difícil de engenharia reversa do que código-fonte não compilado porque carece da legibilidade e abstração que linguagens de alto nível possuem. Além disso, ferramentas de fuzzing aprimoram a capacidade do código compilado de resistir ao processamento de engenharia reversa.
  • Estabilidade. Verifique seu código para erros de sintaxe, questões de segurança de tipos e outras questões na hora da compilação. Ao detectar esses erros em tempo de compilação, muitos erros podem ser eliminados no código.
  • Interoperabilidade. Como o código MSIL suporta qualquer linguagem .NET, é possível usar assemblies originalmente escritos em outras linguagens no código. Por exemplo, se você estiver escrevendo ASP.NET página web em C#, pode adicionar uma referência a um arquivo .dll escrito no Visual Basic.


ASP.NET Core pré-compilado

Pré-compilado

Pré-compilação é o método padrão para ASP .Net Core. No momento da publicação, todas as visualizações do Razor no sistema são pré-compiladas por padrão. A DLL de visualização compilada é uniformemente nomeada xxx.PrecompiledViews.dll ou xxx.Views.dll

Compilação dinâmica

É fácil configurar todo o projeto para compilação dinâmica, basta adicionar um projeto de configuração MvcRazorCompileOnPublish com o valor de false



ASP.NET Pré-compilação do site

Usamos o Visual Studio para publicar um site das seguintes maneiras:




O significado da opção "Permitir atualizações para este site pré-compilado" Quando publicamos um projeto web .Net, em geral, todos os arquivos . CS, que gera automaticamente uma biblioteca de links dinâmicos DLL, que pode proteger muito bem o código-fonte do site, pois o código do lado do servidor geralmente é colocado em . Como os arquivos DLL no arquivo CS são todos gerados e depois enviados para o servidor, os outros não podem abri-los facilmente!

No entanto, outros arquivos, como ashx, aspx e outros arquivos, o que está neles é o que é, outros podem abrir esses arquivos para visualização, embora outros não possam ver o código CS, mas ainda conseguem ver o código HTML ou alguns controles do servidor e atributos relacionados no arquivo ASPAC; Um arquivo como ashx é equivalente a um arquivo CS, e o código nele pode ser facilmente visto;

Portanto, . Arquivos CS são seguros, mas ASPX, ashx e outros arquivos não são seguros; Então, existe alguma forma de tornar os arquivos web enviados para o servidor seguros? Existe uma maneira, ou seja, ao publicar, não marcar "Permitir atualizações para este site pré-compilado";

Verifique atualizações de Permitir para este site pré-compilado

Se você marcar "Permitir atualização deste site pré-compilado" ao publicar a web, o resultado é o seguinte: o arquivo inteiro do site, exceto todos os arquivos CS compilados em arquivos DLL, outros arquivos, e o original não tem alterações, o que está dentro ou o quê, desde que outros o abram pelo Notepad, o código, código HTML, etc. dentro pode ser visto por outros rapidamente.

Além disso, quando os usuários visitam uma página pela primeira vez, elas precisam ser compiladas para encontrar bugs e, se não houver erros, elas podem ser acessadas normalmente, então a velocidade ficará relativamente lenta. As visitas depois disso são normais;

Desmarque "Permitir atualizações deste site pré-compilado"

Se você não marcar "Permitir atualização deste site pré-compilado" ao publicar na web, o resultado é o seguinte: 1. Todos os arquivos CS no site são compilados em arquivos DLL; 2. Além do arquivo cs, outros arquivos, como ASPX, ASHX e outros arquivos, também são compilados juntos, e cada arquivo gera um arquivo *.compiled correspondente no diretório BIN;

Depois disso, se você visualizar arquivos ASPX, ASHX e outros pelo bloco de notas, não verá nenhum código neles, nem mesmo a marcação de código HTML é visível; abra um arquivo assim, há apenas uma linha de texto nele, o conteúdo é "Este é um arquivo de marcação gerado pela ferramenta pré-compilada, não deve ser excluído!", e o tamanho desses arquivos é 1kb;

Se você tentar abrir uma página de site, verá que, exceto pela primeira página após o início do projeto, que ainda leva 1~2 segundos (sem EF), a primeira vez que cada página abre instantaneamente (a primeira lentidão do EF está além do escopo deste artigo). Isso me faz sentir atrasado para ver o pré-compilado!

Aqui eu digo secretamente que deletar o diretório Views não afetará a abertura normal da página web~ Por que você não deixa isso ser deletado, não ousamos perguntar, e não ousamos deletar.

O objetivo foi alcançado, e havia alguns efeitos posteriores que precisavam ser resolvidos, como a bagunça no diretório bin.

Selecione "Não mesclar." Crie assemblies separados para cada página e controle", e o resultado é muito mais arquivos App_Web_*.dll no bin.



No momento do lançamento, a raiz do projeto gera um arquivo PrecompiledApp.config. O conteúdo é o seguinte:



O arquivo PrecompiledApp.config é usado para acompanhar como a aplicação é implantada e se ASP.NET precisa compilar algum arquivo no momento da solicitação.




Anterior:Explicação dos novos recursos e pontos de conhecimento do C# 8.0
Próximo:EF DbContext garante que o contexto é único
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com