O documento discute estratégias para melhorar o desempenho de aplicações PHP, focando principalmente nos pontos a seguir:
1) A maior parte dos problemas de desempenho está no frontend, não no backend PHP. É importante otimizar assets como imagens, CSS e JavaScript.
2) Ferramentas como PageSpeed Insights e YSlow ajudam a diagnosticar gargalos e sugerir melhorias. Técnicas como minificação, cache, CDNs e redução de requisições HTTP são fundamentais.
3) É crucial equilibrar performance e segurança, remo
O documento fornece diretrizes de qualidade e usabilidade para designers e desenvolvedores de websites. As seções abordam planeamento, experiência do usuário, acessibilidade e desempenho. Algumas recomendações incluem: (1) considerar primeiro a interação do usuário antes do design; (2) evitar pop-ups e gráficos não solicitados; (3) fornecer feedback imediato sobre as ações do usuário.
O documento discute técnicas para otimizar aplicações web, incluindo organização do HTML e CSS, redução de requisições, minificação e combinação de arquivos JavaScript e CSS, otimização de imagens, uso de sprites CSS, carregamento modular de JavaScript e ferramentas de diagnóstico.
O documento discute como a Amazon CloudFront e a Amazon Route 53 podem ser usadas para acelerar conteúdo dinâmico e estático de aplicações web, melhorando a performance e disponibilidade. A CloudFront pode cachear conteúdo estático e dinâmico de forma flexível, enquanto a Route 53 fornece roteamento baseado em latência para melhorar o tempo de resposta. Juntos, esses serviços podem remover carga dos servidores originais e melhorar significativamente a experiência do usuário.
Passo a Passo SEO - Otimização de Sites para Sistemas de BuscaEnlink
O documento fornece um guia passo-a-passo para otimização de sites para mecanismos de busca. Ele discute como escolher palavras-chave, estruturar páginas, criar conteúdo relevante, construir links, medir resultados e refinar estratégias de otimização de mecanismos de busca.
0 Introdução ao Desenvolvimento Web - ApresentaçãoMauro Duarte
Este documento apresenta um curso introdutório sobre desenvolvimento web que inclui 20 aulas sobre HTML, CSS e padrões web. O curso é ministrado pelo professor Mauro Duarte e inclui três provas para avaliar o conhecimento dos alunos.
O documento discute estratégias para melhorar o desempenho de aplicações PHP, focando principalmente nos pontos a seguir:
1) A maior parte dos problemas de desempenho está no frontend, não no backend PHP. É importante otimizar assets como imagens, CSS e JavaScript.
2) Ferramentas como PageSpeed Insights e YSlow ajudam a diagnosticar gargalos e sugerir melhorias. Técnicas como minificação, cache, CDNs e redução de requisições HTTP são fundamentais.
3) É crucial equilibrar performance e segurança, remo
O documento fornece diretrizes de qualidade e usabilidade para designers e desenvolvedores de websites. As seções abordam planeamento, experiência do usuário, acessibilidade e desempenho. Algumas recomendações incluem: (1) considerar primeiro a interação do usuário antes do design; (2) evitar pop-ups e gráficos não solicitados; (3) fornecer feedback imediato sobre as ações do usuário.
O documento discute técnicas para otimizar aplicações web, incluindo organização do HTML e CSS, redução de requisições, minificação e combinação de arquivos JavaScript e CSS, otimização de imagens, uso de sprites CSS, carregamento modular de JavaScript e ferramentas de diagnóstico.
O documento discute como a Amazon CloudFront e a Amazon Route 53 podem ser usadas para acelerar conteúdo dinâmico e estático de aplicações web, melhorando a performance e disponibilidade. A CloudFront pode cachear conteúdo estático e dinâmico de forma flexível, enquanto a Route 53 fornece roteamento baseado em latência para melhorar o tempo de resposta. Juntos, esses serviços podem remover carga dos servidores originais e melhorar significativamente a experiência do usuário.
Passo a Passo SEO - Otimização de Sites para Sistemas de BuscaEnlink
O documento fornece um guia passo-a-passo para otimização de sites para mecanismos de busca. Ele discute como escolher palavras-chave, estruturar páginas, criar conteúdo relevante, construir links, medir resultados e refinar estratégias de otimização de mecanismos de busca.
0 Introdução ao Desenvolvimento Web - ApresentaçãoMauro Duarte
Este documento apresenta um curso introdutório sobre desenvolvimento web que inclui 20 aulas sobre HTML, CSS e padrões web. O curso é ministrado pelo professor Mauro Duarte e inclui três provas para avaliar o conhecimento dos alunos.
O documento discute os principais conceitos da Web 2.0, incluindo sua evolução, tecnologias envolvidas e oportunidades de mercado. Aborda tópicos como a história da web, modelos de desenvolvimento, linguagens como HTML, CSS e JavaScript e padrões como W3C.
O documento fornece uma visão geral do desenvolvimento web, discutindo seus principais conceitos ao longo de quatro ciclos. Apresenta também as vantagens da web, como informação disponível a qualquer hora e em qualquer lugar, além de explicar brevemente como funciona através da troca de dados entre cliente e servidor.
JS Experience 2017 - Otimizando o front endiMasters
Thales Carvalho, Course Manager da Udacity fala sobre Otimizando o front end no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
O documento apresenta uma introdução ao desenvolvimento web, abordando:
1) As características dos clientes e servidores na arquitetura cliente-servidor;
2) A evolução da web ao longo do tempo, desde a criação da HTML até o desenvolvimento de novas tecnologias como JavaScript, CSS e DHTML;
3) Tópicos importantes como a "guerra dos navegadores", a necessidade de padronização e o surgimento de novas especificações como HTML4, CSS e DOM.
Gestão de Conteúdos com Aplicações Instaladas em ServidoresFabioMDias
Este documento discute a implementação de um site sobre o Arquivo Português do Porto usando ferramentas de gestão de conteúdo instaladas localmente. O Wordpress foi selecionado por ter funcionalidades adequadas e ser fácil de usar. O site foi migrado com sucesso de uma plataforma online para um servidor local para dar mais controle sobre armazenamento e desempenho.
O documento resume os principais conceitos da arquitetura da web, incluindo o modelo cliente-servidor, protocolo HTTP, URLs e como as páginas interagem entre o browser e o servidor. Também discute o desenvolvimento de sistemas web usando linguagens como HTML, Java e PHP.
O documento fornece uma introdução sobre o que é SEO (Otimização para mecanismos de busca), comparando-o com SEM (Marketing de mecanismos de busca). Explica brevemente as técnicas de otimização On Page (no próprio site) e Off Page (em outros sites), como títulos, meta tags e URLs amigáveis. Também recomenda ferramentas e sites de referência sobre o assunto.
O documento discute caminhos para aumentar a produtividade de desenvolvedores web. Ele descreve como frameworks como Struts melhoraram a produtividade no passado, mas se tornaram ultrapassados, e discute opções modernas como Django, Rails e Grails que oferecem maior produtividade. O documento também enfatiza a importância de habilidades em client-side e padrões web para manter desenvolvedores atualizados.
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
O documento apresenta informações sobre:
1) A estrutura e componentes principais de um navegador da web, incluindo a interface do usuário, engine do navegador, engine de renderização e componentes de rede.
2) O fluxo de renderização de páginas web, incluindo a construção da DOM a partir do HTML, CSSOM a partir do CSS e árvore de renderização.
3) Técnicas para otimizar o critical rendering path como priorizar recursos, async/defer scripts e code splitting.
Este documento fornece uma introdução sobre como criar módulos para o Divi no WordPress de forma simples. Explica a estrutura básica de arquivos necessária, como criar funções e seções, e os principais tipos de campos disponíveis. Também mostra como renderizar os dados no frontend e incluir arquivos CSS e JS.
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPressWordCamp Floripa
O documento discute estratégias para melhorar a performance de sites WordPress com foco nas métricas Core Web Vitals do Google. O palestrante Daniel Paz aborda temas como otimização de imagens, uso de CDNs, cache, atraso de scripts e melhorias nas práticas de desenvolvimento para melhor experiência do usuário.
Performance em Serviços Web - Vinicius MelloTchelinux
Este documento fornece dicas para melhorar o desempenho de serviços web. Ele discute como reduzir o número de requisições HTTP, distribuir requisições entre vários servidores e adiar requisições desnecessárias para acelerar o carregamento de páginas. Várias ferramentas são mencionadas para medir o desempenho de sites.
The document introduces Grails, a web framework for Java that aims to provide high productivity and rapid application development. It discusses how Grails addresses issues like slow development speed and repetitive tasks that developers face with traditional Java web development. Key features highlighted include conventions over configuration, integration with Spring and Hibernate, and a large ecosystem of plugins. Real-world success stories and a vibrant community are also cited.
Este documento apresenta uma palestra sobre desenvolvimento de aplicações web escaláveis. Apresenta conceitos como performance, capacidade e escalabilidade. Discutem técnicas para otimizar os servidores web, banco de dados MySQL, PHP, cache, bibliotecas JavaScript e imagens. Apresenta métricas e ferramentas de monitoramento. Discutem arquiteturas escaláveis com balanceadores de carga, cache servers e sharding de dados.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
- O documento discute técnicas para melhorar o desempenho de sites, incluindo otimização de HTML, CSS, JavaScript, imagens e configurações no servidor;
- Recomenda-se minificar e concatenar arquivos, evitar manipulação excessiva do DOM, usar CDNs e gzip para reduzir tamanho de arquivos e tempo de carregamento;
- Cuidados com sprites, icon fonts, escala de imagens e otimização delas também são destacados para melhorar a performance.
Desenvolvendo aplicações Web escaláveiselliando dias
Este documento resume uma apresentação sobre desenvolvimento de aplicações web escaláveis. Aborda tópicos como terminologia, camadas, servidores web, bancos de dados, PHP, cache, métricas, ferramentas, arquitetura e lições aprendidas para lidar com crescimento rápido.
O documento apresenta Frederico Maia Arantes e suas qualificações como programador Java. Em seguida, fornece uma introdução ao conceito de computação em nuvem, discutindo seus principais tipos (IaaS, SaaS, PaaS), vantagens como escalabilidade e elasticidade, e desafios como a ausência de joins e transações. Exemplos de serviços em nuvem como Google Docs, Dropbox e Amazon Web Services são apresentados.
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)Aryel Tupinambá
O documento apresenta o Webpack, uma ferramenta de empacotamento de módulos que permite carregar dependências de forma otimizada. O Webpack usa plugins e loaders para processar diferentes tipos de arquivos e gerar um único arquivo de saída, resolvendo dependências de forma recursiva. Embora o Webpack não execute tarefas como compilação de Sass ou transpilação de ES6 diretamente, ele suporta esses casos por meio de loaders adequados.
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
O documento discute a complexidade do ecossistema JavaScript e como Vue.js pode ajudar a simplificar o desenvolvimento front-end. Ele explica conceitos como EcmaScript, Node, pacotes, task runners, transpilers, bundlers e testes. Em seguida, apresenta o framework Vue.js como uma forma progressiva de construir interfaces com componentes de único arquivo que oferecem renderização do lado do servidor e do cliente.
Core Web Vitals - Técnicas de Performance Web pra Javascript CamiloMicheletto1
O documento discute métricas e técnicas de performance web focadas no usuário como estabilidade, disponibilidade e robustez. Ele explica o Critical Rendering Path, estratégias para melhorar a performance como preload, preconnect e reduzir javascript, e formas de medir a performance usando o DevTools e o Lighthouse.
O documento descreve o Easy Rails, uma ferramenta que facilita a instalação e uso do framework Ruby on Rails em Windows e Linux. O Easy Rails é compacto, portátil, gratuito e não requer configurações complexas ou permissões administrativas, tornando o Rails acessível para estudantes e desenvolvedores com recursos limitados. O autor também discute projetos relacionados e agradece à comunidade por seu apoio.
O documento discute os principais conceitos da Web 2.0, incluindo sua evolução, tecnologias envolvidas e oportunidades de mercado. Aborda tópicos como a história da web, modelos de desenvolvimento, linguagens como HTML, CSS e JavaScript e padrões como W3C.
O documento fornece uma visão geral do desenvolvimento web, discutindo seus principais conceitos ao longo de quatro ciclos. Apresenta também as vantagens da web, como informação disponível a qualquer hora e em qualquer lugar, além de explicar brevemente como funciona através da troca de dados entre cliente e servidor.
JS Experience 2017 - Otimizando o front endiMasters
Thales Carvalho, Course Manager da Udacity fala sobre Otimizando o front end no JS Experience'17
Saiba mais em https://eventos.imasters.com.br/jsexperience
O documento apresenta uma introdução ao desenvolvimento web, abordando:
1) As características dos clientes e servidores na arquitetura cliente-servidor;
2) A evolução da web ao longo do tempo, desde a criação da HTML até o desenvolvimento de novas tecnologias como JavaScript, CSS e DHTML;
3) Tópicos importantes como a "guerra dos navegadores", a necessidade de padronização e o surgimento de novas especificações como HTML4, CSS e DOM.
Gestão de Conteúdos com Aplicações Instaladas em ServidoresFabioMDias
Este documento discute a implementação de um site sobre o Arquivo Português do Porto usando ferramentas de gestão de conteúdo instaladas localmente. O Wordpress foi selecionado por ter funcionalidades adequadas e ser fácil de usar. O site foi migrado com sucesso de uma plataforma online para um servidor local para dar mais controle sobre armazenamento e desempenho.
O documento resume os principais conceitos da arquitetura da web, incluindo o modelo cliente-servidor, protocolo HTTP, URLs e como as páginas interagem entre o browser e o servidor. Também discute o desenvolvimento de sistemas web usando linguagens como HTML, Java e PHP.
O documento fornece uma introdução sobre o que é SEO (Otimização para mecanismos de busca), comparando-o com SEM (Marketing de mecanismos de busca). Explica brevemente as técnicas de otimização On Page (no próprio site) e Off Page (em outros sites), como títulos, meta tags e URLs amigáveis. Também recomenda ferramentas e sites de referência sobre o assunto.
O documento discute caminhos para aumentar a produtividade de desenvolvedores web. Ele descreve como frameworks como Struts melhoraram a produtividade no passado, mas se tornaram ultrapassados, e discute opções modernas como Django, Rails e Grails que oferecem maior produtividade. O documento também enfatiza a importância de habilidades em client-side e padrões web para manter desenvolvedores atualizados.
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
O documento apresenta informações sobre:
1) A estrutura e componentes principais de um navegador da web, incluindo a interface do usuário, engine do navegador, engine de renderização e componentes de rede.
2) O fluxo de renderização de páginas web, incluindo a construção da DOM a partir do HTML, CSSOM a partir do CSS e árvore de renderização.
3) Técnicas para otimizar o critical rendering path como priorizar recursos, async/defer scripts e code splitting.
Este documento fornece uma introdução sobre como criar módulos para o Divi no WordPress de forma simples. Explica a estrutura básica de arquivos necessária, como criar funções e seções, e os principais tipos de campos disponíveis. Também mostra como renderizar os dados no frontend e incluir arquivos CSS e JS.
WordCamp Floripa 2021 - Daniel - Core web vitals e WordPressWordCamp Floripa
O documento discute estratégias para melhorar a performance de sites WordPress com foco nas métricas Core Web Vitals do Google. O palestrante Daniel Paz aborda temas como otimização de imagens, uso de CDNs, cache, atraso de scripts e melhorias nas práticas de desenvolvimento para melhor experiência do usuário.
Performance em Serviços Web - Vinicius MelloTchelinux
Este documento fornece dicas para melhorar o desempenho de serviços web. Ele discute como reduzir o número de requisições HTTP, distribuir requisições entre vários servidores e adiar requisições desnecessárias para acelerar o carregamento de páginas. Várias ferramentas são mencionadas para medir o desempenho de sites.
The document introduces Grails, a web framework for Java that aims to provide high productivity and rapid application development. It discusses how Grails addresses issues like slow development speed and repetitive tasks that developers face with traditional Java web development. Key features highlighted include conventions over configuration, integration with Spring and Hibernate, and a large ecosystem of plugins. Real-world success stories and a vibrant community are also cited.
Este documento apresenta uma palestra sobre desenvolvimento de aplicações web escaláveis. Apresenta conceitos como performance, capacidade e escalabilidade. Discutem técnicas para otimizar os servidores web, banco de dados MySQL, PHP, cache, bibliotecas JavaScript e imagens. Apresenta métricas e ferramentas de monitoramento. Discutem arquiteturas escaláveis com balanceadores de carga, cache servers e sharding de dados.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
- O documento discute técnicas para melhorar o desempenho de sites, incluindo otimização de HTML, CSS, JavaScript, imagens e configurações no servidor;
- Recomenda-se minificar e concatenar arquivos, evitar manipulação excessiva do DOM, usar CDNs e gzip para reduzir tamanho de arquivos e tempo de carregamento;
- Cuidados com sprites, icon fonts, escala de imagens e otimização delas também são destacados para melhorar a performance.
Desenvolvendo aplicações Web escaláveiselliando dias
Este documento resume uma apresentação sobre desenvolvimento de aplicações web escaláveis. Aborda tópicos como terminologia, camadas, servidores web, bancos de dados, PHP, cache, métricas, ferramentas, arquitetura e lições aprendidas para lidar com crescimento rápido.
O documento apresenta Frederico Maia Arantes e suas qualificações como programador Java. Em seguida, fornece uma introdução ao conceito de computação em nuvem, discutindo seus principais tipos (IaaS, SaaS, PaaS), vantagens como escalabilidade e elasticidade, e desafios como a ausência de joins e transações. Exemplos de serviços em nuvem como Google Docs, Dropbox e Amazon Web Services são apresentados.
FrontInVale 2016: Webpack - A evolução do asset pipeline (Lightning Talk)Aryel Tupinambá
O documento apresenta o Webpack, uma ferramenta de empacotamento de módulos que permite carregar dependências de forma otimizada. O Webpack usa plugins e loaders para processar diferentes tipos de arquivos e gerar um único arquivo de saída, resolvendo dependências de forma recursiva. Embora o Webpack não execute tarefas como compilação de Sass ou transpilação de ES6 diretamente, ele suporta esses casos por meio de loaders adequados.
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
O documento discute a complexidade do ecossistema JavaScript e como Vue.js pode ajudar a simplificar o desenvolvimento front-end. Ele explica conceitos como EcmaScript, Node, pacotes, task runners, transpilers, bundlers e testes. Em seguida, apresenta o framework Vue.js como uma forma progressiva de construir interfaces com componentes de único arquivo que oferecem renderização do lado do servidor e do cliente.
Core Web Vitals - Técnicas de Performance Web pra Javascript CamiloMicheletto1
O documento discute métricas e técnicas de performance web focadas no usuário como estabilidade, disponibilidade e robustez. Ele explica o Critical Rendering Path, estratégias para melhorar a performance como preload, preconnect e reduzir javascript, e formas de medir a performance usando o DevTools e o Lighthouse.
O documento descreve o Easy Rails, uma ferramenta que facilita a instalação e uso do framework Ruby on Rails em Windows e Linux. O Easy Rails é compacto, portátil, gratuito e não requer configurações complexas ou permissões administrativas, tornando o Rails acessível para estudantes e desenvolvedores com recursos limitados. O autor também discute projetos relacionados e agradece à comunidade por seu apoio.
O documento apresenta Frederico Maia, um programador Java e instrutor. Ele discute o conceito de computação em nuvem e como serviços como Google Docs, Dropbox e Amazon Web Services oferecem armazenamento e processamento na nuvem. O documento também descreve como o Google App Engine pode ser usado para hospedar aplicativos Java de forma escalonável e elástica na nuvem.
1) O documento apresenta um workshop sobre MongoDB, um banco de dados não-relacional, discutindo seus principais recursos e como implementá-lo;
2) MongoDB armazena dados em formato de documentos JSON e é uma alternativa ao MySQL para casos que demandem alta performance, escalabilidade e flexibilidade de esquema;
3) O documento mostra como modelar dados, fazer operações básicas e implementar um sistema de blog usando MongoDB e PHP.
Este documento discute otimizações para melhorar o desempenho do lado do cliente em sites. Algumas das principais dicas incluem agrupar arquivos CSS e JavaScript em arquivos únicos e cacheados, usar sprites CSS para imagens, reduzir o número de conexões HTTP desnecessárias e minimizar arquivos.
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
Este documento discute como usar Xen e CoreOS para implementar uma solução de data mining com NodeJS e ElasticSearch de forma escalável e segura. Ele apresenta dois estudos de caso reais de aplicações intensivas de dados e discute os desafios de levantamento de requisitos e escalabilidade, propondo estratégias como uso de cloud privada, Docker, bancos de dados multi-níveis e cache para atender requisitos de alto desempenho e disponibilidade.
Sites Responsivos - Como mostrar o mesmo conteúdo em diversos aparelhosGilberto Crespo
Palestra para iniciantes no desenvolvimento responsivo, onde são explicada algumas técnicas para dar maior orientação ao desenvolvedor de como se aprofundar posteriormente.
O documento fornece uma agenda para um workshop sobre otimização de frontends. A agenda inclui tópicos como entendimento de requisições e respostas, deficiências do navegador, organização do código, ferramentas de automação e cache.
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...Cleber Dantas
O documento discute técnicas e recursos para desenvolvimento web em grandes escalas, incluindo: (1) otimizações no front-end como sprites de imagens e minificação de JavaScript; (2) uso de Ajax, jQuery e JSON para melhorar a comunicação entre cliente e servidor; (3) implementação de caches de cliente e servidor para melhorar o desempenho; (4) entrega de conteúdo através de CDNs e NGINX; (5) uso de Web Sockets para aplicações em tempo real.
Este documento fornece dicas para otimizar o desempenho front-end de sites WordPress, incluindo reduzir consultas desnecessárias ao banco de dados, usar compressão Zlib, gerenciar plugins de forma adequada, otimizar arquivos CSS e JavaScript, imagens e sprites CSS. O autor relata como essas técnicas melhoraram significativamente o tempo de carregamento de uma página de exemplo de 10 para 5 segundos.
Esta palestra apresenta a técnica AJAX, explicando como funciona o objeto XMLHttpRequest, onde deve ser usado e como pode ser implementado sem e com o framework XAJAX. Inclui exemplos práticos de um mural de recados usando requisições assíncronas e demonstra como JSON pode ser usado para processamento de dados.
O documento discute o uso de XS Data Services (XSDS) para acessar dados no banco HANA de aplicações nativas em XSJS. Ele apresenta como criar tabelas no HANA usando scripts, arquivos .hdbtable ou .hdbdd. Também mostra como usar XSDS para criar, ler, atualizar e deletar registros de forma simplificada em comparação a $.db e $.hdb.
Semelhante a Alta performance de Aplicações Web (20)
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
1. Alta Performance de
Aplicações Web
Michael Schuenck dos Santos
@michaelss
segunda-feira, 14 de maio de 12
2. Quem sou eu?
MSc. em Sistemas e
Computação
Analista de Sistemas no TRE-TO
Ex-professor
Mantenedor do clapside.com
@michaelss
zeropontoum.tumblr.com
segunda-feira, 14 de maio de 12
3. Roteiro
Importância
Front-end
Back-end
segunda-feira, 14 de maio de 12
12. Importância
Criado em Outubro/2010
Mar/12: 30 milhões de usuários
Mai/12: 50 milhões de usuários
upload de 58 fotos/segundo
segunda-feira, 14 de maio de 12
13. Importância
fonte: http://blog.kissmetrics.com/loading-time/?wide=1
segunda-feira, 14 de maio de 12
15. Front-End
“80% do tempo de resposta ao usuário é gasto no
front-end.” -Yahoo
Download e interpretação em tempo de execução
HTML
CSS
JavaScript
Anúncios, em alguns casos
segunda-feira, 14 de maio de 12
16. Front-End
“80% do tempo de resposta ao usuário é gasto no
front-end.” -Yahoo
Download e interpretação em tempo de execução
HTML
CSS É o lado mais fácil
JavaScript de ser tratado.
Anúncios, em alguns casos
segunda-feira, 14 de maio de 12
17. Reduzir quantidade de
requisições HTTP
Requisições e respostas têm cabeçalho e corpo
Layouts mais Menos arquivos a serem
limpos recuperados
Combinar Um só arquivo JS
arquivos Um só arquivo CSS
CSS Sprites
Image Maps
segunda-feira, 14 de maio de 12
18. “A proximidade do usuário ao servidor Web tem
impacto no tempo de resposta” -Yahoo
segunda-feira, 14 de maio de 12
19. Usar uma Rede de Entrega
de Conteúdo (CDN)
“A proximidade do usuário ao servidor Web tem
impacto no tempo de resposta” -Yahoo
Distribuir a aplicação em servidores espalhados pelo
mundo?
Não, apenas o conteúdo estático
CDN própria ou de terceiros ($$$)
Akamai, EdgeCast, level3
Google: algumas bibliotecas (JQuery, ExtJS, WebFonts)
segunda-feira, 14 de maio de 12
20. Cache (navegador)
O que é?
Adicionar cabeçalho Expires ou Cache-Control
Servidor Web: Apache, IIS, nginx
Imagens, CSS, JavaScript
Útil só depois que o usuário já visitou sua página
segunda-feira, 14 de maio de 12
21. Cache (navegador)
O que é? E se eu precisar alterar
um arquivo?
Adicionar cabeçalho Expires ou Cache-Control
Servidor Web: Apache, IIS, nginx
Imagens, CSS, JavaScript
Útil só depois que o usuário já visitou sua página
segunda-feira, 14 de maio de 12
22. Cache (navegador)
O que é? E se eu precisar alterar
um arquivo?
Adicionar cabeçalho Expires ou Cache-Control
Servidor Web: Apache, IIS, nginx
Imagens, CSS, JavaScript principal.120.css
Útil só depois que o usuário já visitou sua página
segunda-feira, 14 de maio de 12
23. Cache Vazio
Cache Cheio
segunda-feira, 14 de maio de 12
24. Gzipar A partir do HTTP 1.1
Accept-Encoding: gzip, deflate
Cliente Servidor
Content-Encoding: gzip
Redução no tempo de resposta: ± 70%
Problemas com navegadores mais antigos
90% dos navegadores usados suportam Gzip
Eficaz para arquivos de texto (HTML, JS, CSS, XML, JSON)
segunda-feira, 14 de maio de 12
25. (function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var
b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||
(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||
cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")
+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}
function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs()
{setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci()
{try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var
d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof
h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n)
{p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!
p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var
e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(...
segunda-feira, 14 de maio de 12
26. Minify JavaScript e CSS
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var
b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||
(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||
cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")
+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}
function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs()
{setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci()
{try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var
d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof
h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n)
{p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!
p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var
e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(...
Remoção de espaços, quebras de linhas, tabs
JSMin, YUI Compressor
Ruby On Rails: nativo
Grails: por meio de plugins (UI Performance, Resources)
Java (JSP/JSF): http://code.google.com/p/granule/
segunda-feira, 14 de maio de 12
27. Estilos no topo, JS no fim
CSS <head>
Páginas parecem carregar mais
rápido CSS
Páginas renderizam
progressivamente <body>
JavaScript
Scripts bloqueiam mais de dois
downloads paralelos
$(document).ready(function(){
JQuery: // Your code here JavaScript
});
segunda-feira, 14 de maio de 12
28. Outras Práticas
JS e CSS externos
Se os JavaScript’s e CSS’s ficarem no HTML, eles
não ficarão no cache
Otimizar imagens
Evitar Redirects
Remover scripts duplicados (2 dos top-10 sites dos
EUA)
Não escalar imagens em HTML
segunda-feira, 14 de maio de 12
29. Front-end: ferramentas
YSlow: http://yslow.org/
Google PageSpeed: https://developers.google.com/
speed/pagespeed/insights
Smush.it: http://developer.yahoo.com/yslow/smushit/
JSLint: http://jslint.com/
segunda-feira, 14 de maio de 12
31. Back-end
O cuidado com a capacidade de expansão da infraestrutura
deve ser proporcional à quantidade de acessos
Se a infraestrutura não suportar, todo o site pode ficar
indisponível
Identificação de gargalos
Projeto do banco de dados
Distribuição do processamento e armazenamento
segunda-feira, 14 de maio de 12
32. Nem sempre...
Um só servidor de aplicação e um só servidor de BD
Muitas vezes é suficiente
É difícil gerenciar ambientes de alto desempenho
Controle do que está em produção
segunda-feira, 14 de maio de 12
33. Cache (servidor)
Cliente Servidor Web BD
segunda-feira, 14 de maio de 12
34. Cache (servidor)
Cliente Servidor Web BD
Proxy HTTP reverso com cache
segunda-feira, 14 de maio de 12
35. Cache (servidor)
Cliente Servidor Web BD
Proxy HTTP reverso com cache
Ex.: Varnish, Nginx e Apache com mod_cache e mod_proxy
Entrega aumentada em 300 - 1000x (Varnish)
Útil: leituras mais frequentes que escritas
segunda-feira, 14 de maio de 12
36. Cache (servidor)
Cliente Servidor Web BD
Proxy HTTP reverso com cache Cache de dados
Ex.: Varnish, Nginx e Apache com mod_cache e mod_proxy
Entrega aumentada em 300 - 1000x (Varnish)
Útil: leituras mais frequentes que escritas
segunda-feira, 14 de maio de 12
37. Cache (servidor)
Ex1.: Memcached: genérico e distribuído, usado por
YouTube, Twitter, Wikipedia, Flickr
Ex2.: Ehcache: Java, usada mais em sistemas empresariais
Cliente Servidor Web BD
Proxy HTTP reverso com cache Cache de dados
Ex.: Varnish, Nginx e Apache com mod_cache e mod_proxy
Entrega aumentada em 300 - 1000x (Varnish)
Útil: leituras mais frequentes que escritas
segunda-feira, 14 de maio de 12
39. BD’s NoSQL
Sem SQL: interação mais “leve” e direta
BD servem apenas para armazenamento e recuperação:
Sem lógica no BD
Duplicação p/ performance
Arquitetura distribuída, eventualmente consistentes
Documentos Chave-Valor Objeto
Apache Cassandra
MongoDB
Redis db4o
Apache CouchDB
BerkleyDB
segunda-feira, 14 de maio de 12
40. Servidores Web orientados
a eventos
Também chamados “servidores
assíncronos”
Alternativa aos servidores Web
“orientados a processos”
segunda-feira, 14 de maio de 12
41. Servidores Web orientados
a eventos
Também chamados “servidores
assíncronos”
Alternativa aos servidores Web
“orientados a processos”
segunda-feira, 14 de maio de 12
42. Cloud
SaaS
Ótima opção Aplicações (email, CRM,
comunicação, etc)
Simplicidade
Plataforma estável e aprovada PaaS
Servidores Web, BD,
desenvolvimento
Contra:
Falta de serviços no Brasil IaaS
(dependência da relação US$ x R$) Armazenamento, VM’s,
balanceamento de carga
segunda-feira, 14 de maio de 12
43. Referências
Front-end:
Steve Souders. High Performance Web Sites. O’Reilly, 2007.
Steve Souders. Even Faster Web Sites. O’Reilly, 2009.
http://developer.yahoo.com/performance/rules.html
Back-end:
Martin L. Abbot & Michael T. Fischer. Scalability Rules: 50 Principles
for Scaling Web Sites. Addison-Wesley Professional, 2011.
Martin L. Abbot & Michael T. Fischer. The Art of Scalability: Scalable
Web Architecture, Processes, and Organizations for the Modern
Enterprise. Addison-Wesley Professional, 2009.
segunda-feira, 14 de maio de 12