Como melhorar a performance de websites.net



Documentos relacionados
Desenvolvendo Websites com PHP

Ademir C. Gabardo. Novatec

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec

Desenvolvendo para. Windows 8. Aprenda a desenvolver aplicativos para Windows Phone 8 e Windows 8. Ricardo R. Lecheta. Novatec

Desenvolvimento de Grandes Aplicações Web

Jonathan Stark Brian Jepson

Zend. Framework. Componentes Poderosos para PHP. Flávio Gomes da Silva Lisboa. Novatec

Lojas Virtuais com. Magento. André Nobrega Gugliotti. Novatec

Novatec Editora Ltda

Copyright 2008, 2013 da Novatec Editora Ltda.

Ricardo R. Lecheta. Novatec

Google Analytics Justin Cutroni

Ricardo R. Lecheta. Novatec

2ª EDIÇÃO. André Milani. Novatec

Pramod J. Sadalage Martin Fowler

David Hows Peter Membrey Eelco Plugge

Camila Porto. Novatec

Excel Avançado. 2ª Edição. Antonio Fernando Cinto Wilson Moraes Góes. Novatec

Criando Relatórios com PHP

Novatec Editora Ltda. [2014].

Criando Aplicações Gráficas com PHP

Brandon Rhodes John Goerzen

JQuery. A Biblioteca do Programador JavaScript. 3ª Edição Revisada e ampliada. Maurício Samy Silva. Novatec

Desenvolvendo Websites com PHP

Guia do Programador Joel Saade

André Gugliotti. Novatec

Luiz Carlos Querino Filho

Adail Henrique Spínola Horst Aécio dos Santos Pires André Luis Boni Déo. Novatec

Julia Elman e Mark Lavin. Novatec

Hélio Engholm Jr. Novatec

Wilson Moraes Góes. Novatec

Ricardo Kléber M. Galvão. Novatec

Google Android para Tablets

Keith Wood. Apresentação de Dave Methvin. Novatec

Laboratórios de Tecnologias. Cisco. em Infraestrutura de Redes. Samuel Henrique Bucke Brito. Novatec

PDF Explicado John Whitington

Crie Seu Próprio Site

João Eriberto Mota Filho

Service Desk Corporativo

Rails 3 Básico Cloves Carneiro Jr. Rida Al Barazi

Scrum em Ação. Gerenciamento e Desenvolvimento Ágil de Projetos de Software. Andrew Pham Phuong-Van Pham. Novatec

Paulo Strelczuk. Novatec

Primeiros Passos com o Raspberry Pi

como acabar com sua em apenas 140 caracteres Carolina Lima Novatec

MARKETING DIGITAL NA ERA. Martha Gabriel CONCEITOS, PLATAFORMAS E ESTRATÉGIAS. Novatec

Wilson Moraes Góes. Novatec

Programação Java. em Ambiente Distribuído. Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate. Douglas Rocha Mendes.

Padrões de Projeto em PHP

Ricardo Lino Olonca. Novatec

Guia do Programador Joel Saade

Aprendendo. Unix no OS X. Mountain Lion. Mergulhando no Terminal e no Shell. Dave Taylor. Novatec

Web Interativa com Ajax e PHP

Ademir C. Gabardo. Novatec

Josh Pauli Revisão técnica Scott White. Novatec

Aprendendo Programação. ios. Alasdair Allan. Novatec

Ricardo Lino Olonca. Novatec

Parte I Princípios básicos do Microsoft.NET Framework

Laboratórios de Tecnologias. Cisco. em Infraestrutura de Redes. 2a Edição. Samuel Henrique Bucke Brito. Novatec

Adrian Mejia. Novatec

Nelson Glauber de Vasconcelos Leal

2ª Edição Alexandre Keller

Gerenciamento. de projetos. Bart Gerardi. Novatec. Como evitar problemas previsíveis para o sucesso do projeto

A Arte de SEO. Eric Enge, Stephan Spencer, Jessie Stricchiola e Rand Fishkin Introdução de John Battelle. Novatec

Defenda sua base com circuitos simples, Arduino e Raspberry Pi

marketing ágil Utilização de Metodologias Ágeis em Projetos de Marketing Michelle Accardi-Petersen Novatec

Plano de Aula - Windows 8 - cód Horas/Aula

Sumário. Capítulo 1 Revisão de PHP Capítulo 2 Melhorando o processamento de formulários... 46

Google Android para Tablets

ASP.NET MVC em Ação. Jeffrey Palermo Ben Scheirman Jimmy Bogard. Novatec. Prefácio de Phil Haack

PHP Profissional. Alexandre Altair de Melo Mauricio G. F. Nascimento

Manual de Instalação ( Client / Server ) Versão 1.0

Noções de. Microsoft SQL Server. Microsoft SQL Server

Murillo Lo Visco. Novatec

Usar FTK Imager para gerar evidências, exportar arquivos de evidências, criar imagens forenses e converter imagens existentes.

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Sumário. Capítulo 1 O que é o PHP? Capítulo 2 Instalação do PHP Capítulo 3 Noções básicas de programação... 25

Manual do Usuário Nextel Cloud. Manual do Usuário. Versão Copyright Nextel

Manual Backup Online. Manual do Usuário. Versão Copyright Backup Online

CAPÍTULO 8 Conexões de banco de dados para programadores ASP.NET

Harrison Kinsley Will McGugan

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9

MCTS SHAREPOINT 2010, CONFIGURING Um exame para obter a Certificação completa

Design Centrado no Usuário

André Gugliotti. Novatec

Padrões JavaScript Stoyan Stefanov

Programação Web com Webdev 19 Julio Cesar Pedroso Conteúdo

2.0.0.X. Storage Client. TecnoSpeed. Tecnologia da Informação. Manual do Storage Client

ADO.NET - Roteiro básico e Boas Práticas

Sumário. Capítulo 2 Conceitos Importantes Tópicos Relevantes Instance Base de Dados Conclusão... 37

MANUAL DO ADMINISTRADOR

AngularJS. Uma abordagem prática e objetiva. Michael Henrique R. Pereira. Novatec

Sumário. Parte I Introdução Introdução O Rails é ágil Explorando o conteúdo Agradecimentos... 19

Guia de Instalação e Atualização do Sistema Podológico

Segurança em Redes sem Fio

Ademir Cristiano Gabardo. Novatec

Edgar Gomes de Abreu

Transcrição:

Como melhorar a performance de websites.net Os segredos dos sites de alto desempenho Alfredo Lotar Novatec

Novatec Editora Ltda. [2013]. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Capa: Carolina Kuwabata Revisão gramatical: Cristiane Bernardi Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-381-9 Histórico de impressões: Outubro/2013 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 Email: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec MP20130920

Sumário Prefácio...15 Capítulo 1 Introdução...16 1.1 Minimize as idas e vindas de solicitações e respostas pela rede... 17 1.2 Reduza a quantidade de informações enviadas pela rede... 17 1.3 Armazene em cache os recursos compartilhados... 18 1.4 Evite trabalho desnecessário... 18 1.5 Evite múltiplos processos e/ou servidores... 18 1.6 Diminua o tempo de bloqueio de uma operação... 19 1.7 Minimize o tamanho das páginas... 19 1.7.1 Comentários... 21 1.8 Tabelas... 21 1.9 Reduza o número de elementos DOM...22 1.10 Defina o conjunto de caracteres...22 1.11 Cuidado com mecanismos de busca...23 1.12 DNS...23 1.13 Ícone...24 1.14 JavaScript...25 1.14.1 Limite o número de arquivos.js...26 1.14.2 Carregue arquivos.js sem bloquear a página...27 1.14.3 Elimine conteúdo desnecessário de arquivos.js...27 1.14.4 Evite document.write()...30 1.14.5 Carregue alguns arquivos.js de forma assíncrona...30 1.14.6 CDN... 31 1.15 Folhas de estilo CSS...32 1.15.1 Reduza o tamanho dos arquivos.css...32 1.15.2 Múltiplos arquivos.css...33 1.15.3 Evite bloquear o carregamento da página...33 1.15.4 Otimize a ordem de execução dos arquivos.css e.js...34

8 Como melhorar a performance de websites.net 1.16 Imagens...37 1.16.1 Novo formato de arquivos...38 1.16.2 Como carregar imagens, fotos e figuras...38 1.16.3 Cache de imagens...40 1.16.4 Cache... 41 1.16.5 Image sprites...42 1.16.6 CDN...44 1.17 Download...44 Capítulo 2 Páginas e controles do ASP.NET...45 2.1 AutoEventWireup sempre false...45 2.2 Use Server.Transfer...46 2.3 Bundling e minificação...47 2.3.1 Criando bundles personalizados...48 2.3.2 Desabilitando a minificação em bundles...50 2.3.3 Definindo bundles com CDN...50 2.3.4 Usando bundles... 51 2.4 Server controls...55 2.4.1 View State...56 2.4.2 Não use o controle Label...58 2.4.3 Use server controls somente quando apropriado...58 2.4.4 Evite controles embutidos...60 2.4.5 Data binding... 61 2.4.6 Desative o tema nos controles...63 2.4.7 Evite os controles de validação...63 2.5 Estado do aplicativo...64 2.5.1 Armazene o estado do aplicativo no cliente...64 2.5.2 Não use o objeto Application...64 2.6 Estado de sessão... 66 2.6.1 Diminua o tempo da sessão...67 2.6.2 Formas de armazenamento... 68 2.7 Diminua os acessos ao servidor de banco de dados...70 2.7.1 IsPostBack...70 2.7.2 Validação do lado do cliente e do servidor... 71 2.7.3 Ajax...75 2.7.4 Cache...97 Capítulo 3 ASP.NET MVC... 106 3.1 Cache do ASP.NET MVC...106 3.2 Estado de sessão... 107

Sumário 9 3.3 Ative a validação no cliente... 108 3.4 Desative os mecanismos de exibição... 109 3.5 Desative o Debug...110 3.6 Defina explicitamente o nome do view...110 3.7 Evite passar um model como null...110 3.8 Como carregar user controls partial views... 111 3.9 Desinstale o URL Rewrite... 111 3.10 Use elementos HTML...112 Capítulo 4 Código gerenciado... 113 4.1 Value Types...113 4.2 Reference Types...113 4.2.1 Tipo Object...114 4.3 Boxing e Unboxing...114 4.4 Conversões...116 4.5 Desenvolvimento de classes...118 4.5.1 Classes seladas...118 4.5.2 Use sobrecarga de métodos...119 4.5.3 Finalize e Dispose... 122 4.6 Use a instrução for... 124 4.6.1 Testes de comparação... 124 4.6.2 Execute o código diretamente dentro do loop... 126 4.6.3 Crie uma instância de classe fora do loop... 127 4.7 for ou foreach... 129 4.8 Parallel.For...131 4.9 Parallel.ForEach... 134 4.10 Parallel.For ou Parallel.ForEach... 135 4.11 Manipulando exceções... 135 4.11.1 Instrução throw... 136 4.11.2 Use a instrução finally para liberar recursos... 139 4.11.3 Evite manipular exceções genéricas... 139 4.11.4 Monitore as exceções do aplicativo... 140 4.12 Array... 140 4.12.1 Array de array... 142 4.12.2 Extraindo informações de um array... 142 4.12.3 Testes de comparação... 143 4.13 Coleções... 148 4.13.1 Determine o tipo de dados correto... 148 4.13.2 Escolha o tipo correto de coleção... 149 4.13.3 Defina o número de itens da coleção... 152

10 Como melhorar a performance de websites.net 4.13.4 Obtendo o conteúdo de uma coleção... 152 4.13.5 Testes de performance... 154 Capítulo 5 ADO.NET... 158 5.1 Use o provedor de dados correto... 158 5.2 Use autenticação Windows... 159 5.3 Abrir e fechar conexões... 159 5.4 Pool de conexões... 162 5.4.1 Monitorando o pool de conexões... 163 5.5 Limite a quantidade de informações recuperadas... 164 5.6 Paginação... 164 5.7 Múltiplas instruções SQL...168 5.8 Método ExecuteNonQuery... 169 5.9 Método ExecuteScalar... 170 5.10 Use o método GetOrdinal com DataReaders... 170 5.11 Enumeração CommandBehavior.SequentialAccess... 173 5.12 Stored procedures... 173 5.12.1 Parâmetros de saída... 177 5.13 Usando o método Prepare... 178 5.14 DataSet... 179 5.14.1 DataSet tipados... 180 5.14.2 Testes de comparação... 182 5.15 Transações... 183 5.15.1 Transações SQL... 183 5.15.2 Transações ADO.NET... 184 5.15.3 MSDTC... 185 5.15.4 Defina o nível de isolamento apropriado... 186 5.15.5 Propriedade Enlist igual a false... 187 5.16 Use um objeto IEnumerable ou List<T>em vez de DataSet... 187 5.16.1 Testes de comparação... 194 5.17 Microsoft Data Access Application Block... 196 5.18 Camada de dados personalizada... 198 5.19 Testes de comparação...202 Capítulo 6 ADO.NET Entity Framework... 205 6.1 Crie arquivos.edmx pequenos...205 6.2 Recupere entidades com o método AsNoTracking...206 6.3 AutoDetectChangesEnabled igual false...208 6.4 Recupere somente as informações necessárias...209

Sumário 11 6.5 Filtre as informações corretamente... 210 6.5.1 Filtre antes de usar o método ToList... 211 6.6 Carregue informações de forma eficiente... 213 6.6.1 Cuidado com o método Include... 213 6.7 Paginação... 216 6.8 IEnumerable<T> versus IQueryable<T>...217 6.9 Pré-compilação de consultas LINQ...219 6.10 Geração de views...221 6.10.1 Como pré-gerar um view...221 6.11 Economize recursos ao atualizar ou excluir informações...228 6.12 Paralelismo...230 6.13 Teste de comparação...230 6.13.1 Testando o desempenho com o método AsParallel... 234 6.13.2 Repositório genérico...236 Capítulo 7 SQL Server... 240 7.1 Tabelas...241 7.1.1 Tipos de dados... 242 7.1.2 Desnormalização... 243 7.2 Índices...246 7.2.1 Benefícios de um índice...246 7.2.2 Tipos de índices... 247 7.2.3 Considerações importantes sobre índices... 249 7.2.4 Quando não usar índices... 252 7.3 Consultas... 252 7.3.1 Recupere somente as linhas e colunas necessárias... 252 7.3.2 Declare os objetos do banco de dados com nome completo... 252 7.3.3 Cláusula WHERE... 253 7.3.4 Minimize o uso de cursores...256 7.3.5 Evite a conversão... 257 7.3.6 Use UNION ALL em vez de UNION... 257 7.3.7 Use stored procedures ou consultas com parâmetros... 257 Capítulo 8.NET Framework Performance... 262 8.1 Manipulando string...262 8.1.1 Comparações...262 8.1.2 Concatenação de strings...263 8.1.3 Format ou ToString... 267 8.1.4 IsNullOrEmpty ou IsNullOrWhiteSpace...270 8.2 Expressões regulares... 271

12 Como melhorar a performance de websites.net 8.3 Leitura de arquivos...272 8.3.1 Testes de comparação... 275 8.4 Gravação de arquivos... 278 8.4.1 Testes de comparação...280 8.5 Documentos XML...280 8.5.1 Use XmlReader... 281 8.5.2 Pule partes de um documento XML...282 8.5.3 Validando um documento XML...282 8.5.4 Criando documentos XML...284 8.5.5 Use XPathDocument para processar consultas XPath...285 8.5.6 Não use o operador //...285 8.5.7 Compile expressões frequentemente usadas...285 8.5.8 Cache de folhas de estilo XSLT...286 8.6 Obtendo a data e a hora...287 Capítulo 9 Considerações sobre implantação... 289 9.1 Limite o número de assemblies...289 9.2 Configure o aplicativo corretamente...290 9.2.1 Debug...290 9.2.2 Desative módulos não usados...290 9.2.3 Configure a diretiva @ Page corretamente...293 9.2.4 Desative a autenticação...295 9.3 Compactando as solicitações de um website...295 9.3.1 Compactando arquivos.js e.css...298 9.4 Pré-compilação...302 9.5 Atualize o website corretamente...304 9.6 Use SSL...305 9.7 Native Image Generator (Ngen.exe)...305 Apêndice A Ferramentas úteis... 307 A.1 Monitore as solicitações HTTP...307 A.1.1 Como instalar o Firebug...307 A.2 Softwares de análise de páginas...310 A.3 Monitorando o tempo de resposta... 311 A.4 Computador usado nos testes...312 A.5 Ferramentas de monitoramento...312 A.5.1 Monitor de desempenho...313 A.5.2 Visual Studio Profiler...313 A.5.3 CLR Profiler...317 A.6 Contadores de desempenho...318

Sumário 13 Apêndice B CheckList... 322 Checklist: Introdução... 322 Checklist: Páginas e controles do ASP.NET... 323 Checklist: ASP.NET MVC... 324 Checklist: Código gerenciado... 324 Checklist: ADO.NET... 325 Checklist: ADO.NET Entity Framework... 326 Checklist: SQL Server... 326 Checklist:.NET Framework Performance... 327 Checklist: Considerações sobre implantação... 328