Técnicas e recursos para desenvolvimento Web em cenários de grande escala
1.
2. Técnicas e recursos para desenvolvimento Web em cenários de grande escalaWEB309 Alexandre Tarifa Cleber Dantas
3. Introdução Cenário de aplicações Web para Internet comparados com sistemas internos exigem técnicas ou práticas que normalmente são ignorados ou “desnecessárias” O ambiente de distribuição é praticamente infinito (navegadores, tipos de conexão, dispositivos, localização, etc)
4. Front-End Steve Sounders – “80% dos problemas de performance de aplicações Web estão no Front-end” YSlow – Extensão do Firefox para análise de performance nas páginas – baseado nas 14 regras do livro High Performance Web Sites (existem outros templates)
5. Regra 1: Minimize HTTP Requests Regra 2: Use CDN´s (Content Delivery Network) Regra 3: Use “Expires Header“ Regra 4: Utilize Gzip Regra 5: Mova CSS para o topo Regra 6: Mova scripts para baixo Regra 7: Evite expressões em CSS Regra 8: ‘Inlined’ JavaScript e CSS Regra 9: Minimize Domínios Regra 10: Minimize JavaScript Regra 11: Evite Redirecionamentos Regra 12: Remova Scritps Duplicados Regra 13: Desabilite ETags Regra 14: Cache AJAX Front-End Regra 1: Minimize HTTP Requests Regra 2: Use CDN´s (Content Delivery Network) Regra 3: Use “Expires Header“ Regra 4: Utilize Gzip Regra 5: Mova CSS para o topo Regra 6: Mova scripts para baixo Regra 7: Evite expressões em CSS Regra 8: ‘Inlined’ JavaScript e CSS Regra 9: Minimize Domínios Regra 10: Minimize JavaScript Regra 11: Evite Redirecionamentos Regra 12: Remova Scritps Duplicados Regra 13: Desabilite ETags Regra 14: Cache AJAX
7. Ajax Otimização do trafego de dados entre servidor e cliente (navegador) Trafegar a menor quantidade possível de dados nas requisições jQuery e JSON (JavaScript Object Notation) torna isso muito fácil jQuery Templates (templates de HTML pré carregados nas páginas)
9. Cache A melhor solução de performance é fazer com que o seu código não seja executado o tempo todo! Tipos de Cache Cliente – Headers de expiração (Expires e Cache-Control) Servidor – OutputCache (ASP.NET) e Cache de Objetos (ASP.NET ou memCached)
10. demo Cache (outputcache, cache profile, cache partial, memCached, IIS e helper de atualização de arquivosestáticos)
11. memCached www.memcached.org Sistema distribuído de altíssima performance para armazenamento de informações em cache de objetos em MEMÓRIA RAM. Reduz drasticamente a carga de processamento de servidores de aplicação, banco de dados, etc. Criado pela Danga (livejournal.com) Utilizado por facebook (805 servidores), twitter, linkedin, wikipedia, minha vida, etc Fácil de gerenciar, adicionar novas máquinas e instâncias
12.
13. Infra - CDN Content Delivery Network Rede de distribuição de conteúdo Infraestrutura para ENTREGA do conteúdo Própria Terceirizada (Akamai, Ananke, Azion, UOL, etc) Pública (Microsoft, Google, etc) Distribuição de bibliotecas públicas (exemplo jQuery) http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.min.js
14. CDN - Exemplo Seu site http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.min.js
15. demo CDN – proxy entrega de conteúdo (proxy reverso – nginx e Windows)
18. Web Sockets Recurso do HTML 5 para aplicações Web Real Time Conexão direta e bidirecional com o servidor web Atualização instantânea no cliente (navegadores)
19. LongPolling Forma simples de maximizar o uso de uma requisição HTTP Suporte de todos os browsers (XHR) Conexão longa e “persistente”
21. Fora da caixa ASP.NET é compatível com diversos projetos open source Microsoft mantém o site www.codeplex.com com diversos projetos e disponibiliza o site como repositório público para projetos open source.
22. Fora da caixa – exemplos Banco de dados NoSql http://cassandraemon.codeplex.com/ http://mongodbstudio.codeplex.com/ NodeJS http://nodejs.org/#download Lucene .Net
23. Fora da caixa – NuGet www.nuget.org Distribuição de projetos com fácil implementação no seu projeto (Visual Studio) Biblioteca da própria Microsoft ou pode ser adicionada outras bibliotecas
25. IIS 7 e 7.5 Diversos recursos podem ser implementados diretamente pelo IIS facilitando a implementação e o gerenciamento Os desenvolvedores precisam conhecer
28. Dicas rápidas Debug = true em produção!!! NUNCA! A compilação de páginas ASP.NET leva mais tempo (otimizações desativadas neste modo) Código pode executar de forma mais lenta (caminhos de depuração habilitados) Muito mais memória é usada dentro do aplicativo em tempo de execução Scripts e imagens baixadas pelo manipulador WebResources.axd não são armazenados em cache
29. Dicas rápidas WebForms Só deixe viewstatehabilitato em locais que realmente você precisa! Por default o valor é “true”. Desde a versão 4.0 é muito mais fácil gerenciar esse controle. Compactação de Session, caso necessário a partir da versão 4.0 é possível compactar os objetos em sessão e caso não utilize desligue.
30. Dicas rápidas Bibliotecas prontas Cuidado com controles e plugins prontos Jquery, Ajax control toolkit e afins! Normalmente são pesados e consomem mais recursos do que o necessário! Ferramentas Conheça bem as ferramentas de análise como Firebug, Yslow, Fiddler, etc.
31. Conteúdo Relacionado Slide Obrigatorio Palestrantes, Por favor listarconteudosexistentesdentro das paginas dos produtos (www.microsoft.combrasil) e paginas do TechNet e MSDN (technet.microsoft.com/brasil– msdn.microsoft./com/brasil) Codeplex www.codeplex.com ASP.NET MVC www.asp.net/mvc ASP.NET Brasil http://msdn.microsoft.com/pt-br/ff380144 MSDN www.msdn.com.br Cleber Dantas www.cleberdantas.com Alexandre Tarifa www.alexandretarifa.com.br
32. Recursos Recursos para IT Pros http://technet.microsoft.com/pt-br Recursos para Desenvolvedores http://msdn.microsoft.com/pt-br
CSS SpriteFFSprite meInstalaçãohttp://www.dietaesaude.com.br/alimentosGerar sprite e mostrar css modificadaParalelismoLimite de download paraleloIE7 e anteriores e algumas versões do FF suportam apenas 2 downloads paralelos por subdomínio – Keep aliveIE8 suporta 6 downloads em paralelo – Keep aliveAlgumas versões do FF suportam 8 downloads, IE7 e anteriores suportam 4 – Sem keep alivenetwork.http.max- - Mostrar no FFMostrar site do Minha Vida e explicar os cookies2 MINUTOSMinifyExplicar YUI CompressorMostrar DLLsArquivo de buildConfiguração no post build (propriedades)Compilar e mostrar ganhos gerais
AjaxMostrar site do linha de códigopelo FFMostrar site do techedpelo FFMostrar site do DS, busca de alimentoExemplo 1, ajax, json e jquery templatesDemo.js esta o código do jquery templateSnippet do template Jqueryna toolbox@using (Ajax.BeginForm("Comentar", new AjaxOptions { OnSuccess = "AtualizaDados", HttpMethod = "Post" })){}Mostrarresultado no FFExemplo 2Math.js scriptArrastarcódigoMostrarcarregamento no FFExemplo 3Mostrarcarregamento normal do Iframe – FFMostrar com modificação
Client MemCached - http://code.google.com/p/memcached/wiki/ClientsClient CacheExplicar a diferença entre os headers Expires e Cache-Control - Mostar no FF – Yahoo.comConfigurar na pasta Scripts no IIS o tempo de cache de 10 min, depois mostrar o resultado para o público.Mostrar o Helper de atualização de conteúdo estático + url rewrite. (explicar devagar)Criar o HelperColocar o namespace dentro do web.config da pasta de viewsExplicar que só funciona quando o modo debug não esta ativo.Trocar as chamadas (puxar da toolbox)Executar mostrar que o caminho não existe, logo ta certo.Habilitar a regra de rewrite e mostrar o resultado.