SlideShare uma empresa Scribd logo
Apache
Performance
Tuning

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

1
Agenda
●

Warning

●

Configuração básica

●

Persistent
connections

RAM

●

.htaccess

Módulos padrão

●

SymLinks

●

mod_mem_cache

●

●

mod_disk_cache

●

Logs

●
●

21.fev.2014

Carregar javascripts
depois da página

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

2
Warning

"Premature optimization
is the root of all evil."
Donald Knuth

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

3
Configuração básica
●

●

●

A configuração padrão do Apache é bem
versátil
Usando servidores standard, o Apache pode
atender a alguns milhares de conexões por dia
sem otimizações
Essa configuração pode ser melhorada
ampliando ou reduzindo os recursos
disponíveis por meio de seus módulos

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

4
Otimização
●

Como medir a performance do Apache?
–
–

httperf

–
●

Apache HTTP server bench marking tool
The Grinder, a Java Load Testing Framework

Não há outra forma de medir essa
performance?
–

21.fev.2014

A mais importante métrica que pode ser verificada é
a percepção do usuário

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

5
Otimização

●

21.fev.2014

Por onde começar?

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

6
RAM
●

Siga aquele ditado que diz:
Quanto mais, melhor!

●

●

●

Se possível tenha o máximo de memória que o
servidor, o sistema operacional e seu bolso
permitirem
Mais memória permite um maior número de
processos ou threads
Maior número de requests simultâneos

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

7
Módulos padrão
●

●

●

A carga de módulos usa mais memória e ativa
sequências de verificação adicionais
Inclui rotinas a serem executadas em todas as
chamadas
Vários módulos que vêm configurados por
padrão só são usados em casos específicos

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

8
Módulos padrão
●

Desative módulos desnecessários

●

Alguns módulos para verificar se você precisa deles:
–

authn_alias_module

– authn_anon_module

–

authn_dbm_module

– authnz_ldap_module

–

authz_dbm_module

– authz_owner_module

–

ext_filter_module

– file_cache_module

–

info_module

– ldap_module

–

mem_cache_module

– status_module

–

speling_module

– usertrack_module

–

proxy_module

– proxy_balancer_module

–

proxy_ftp_module

– proxy_http_module

–

proxy_ajp_module

– proxy_connect_module

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

9
Módulos padrão
●

●

O principal objetivo em desativar módulos não
é liberar memória mas sim reduzir o número de
rotinas executadas em cada request
A redução no consumo de memória acontece
como um bônus

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

10
mod_mem_cache
●

●

É útil para criar cache de conteúdo gerado
localmente ou quando o apache atua como um
proxy reverso
Este módulo cria um cache independente por
processo – não compartilhável entre processos

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

11
mod_disk_cache
●

●

●

Também é usado para criar cache de conteúdo
gerado localmente ou quando o apache atua
como um proxy reverso
O cache é criado em uma pasta especificada e
pode ser acessado por todos os processos/
threads do apache
Ao usar mod_disk_cache configure um disco
separado, de alta performance – SSD se
possível – , como cache

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

12
mod_disk_cache
●

●

●

●

Quantidade de pastas para cache pode ser
configurada com CacheDirLength e
CacheDirLevels
Cuidado com CacheDirLength para não criar
poucas pastas ou uma quantidade muito
grande
Prefira uma estrutura com CacheDirLevels=1
para reduzir o tempo de limpeza do cache
Execute o daemon htcacheclean para evitar o
acumulo desnecessário de arquivos sem uso

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

13
mod_disk_cache
●

Como configurar mod_disk_cache
LoadModule disk_cache_module modules/mod_disk_cache.so
<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheEnable disk /
CacheIgnoreHeaders Set-Cookie
CacheRoot "/var/cache/httpd_cache"
CacheDirLength 2
CacheDirLevels 1
</IfModule>
<IfModule>

●

Habilitar o daemon htcacheclean
htcacheclean -d30 -n -t -p /var/cache/httpd_cache 
-l 512M

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

14
mod_disk_cache
●

Como saber se a página foi servida a partir do
cache ou processada?
LogFormat "%h %l %u %t "%r" %>s %b
"%{Referer}i" "%{User-Agent}i"
"%{Age}o"" combined

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

15
Logs
●
●

●

●

Uso intensivo de I/O
Deve usar um disco separado do disco do
conteúdo do apache
Preferencialmente discos SAS – não precisa
ser SSD
Considere o uso do log do sistema

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

16
Persistent connections
●

Vantagens
–

–
●

É mais eficiente manter uma conexão ativa para
enviar um segundo arquivo
Atender a mais de um request por conexão

Desvantagens
–

Pode prejudicar em sites onde só há solicitações
de um único arquivo

–

Mantém uma conexão ativa por mais tempo

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

17
Persistent connections
●

Opções de configuração
LoadModule headers_module modules/mod_headers.so
KeepAlive on
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

18
.htaccess
●

●

Usado para tornar mais flexível a configuração
de sites no Apache
Deve ser habilitado no httpd.conf pela tag
AllowOverride

●

A tag AllowOverRide força o Apache a fazer
varreduras em todas as pastas a partir de / à
procura de arquivos .htaccess

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

19
.htaccess
●

Com esta configuração
DocumentRoot /var/www/html
<Directory />
AllowOverride all
</Directory>

●

Ao acessar este site, o Apache é forçado a
procurar por .htaccess em:
/.htaccess
/var/.htaccess
/var/www/.htaccess
/var/www/html/.htaccess

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

20
SymLinks
●

Há duas opções para permitir o uso de links
simbólicos
FollowSymLinks
SymLinksIfOwnerMatch

●

A segunda opção é mais segura porém, do
ponto de vista de performance, é
extremamente onerosa.

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

21
SymLinks
●

Com esta configuração
DocumentRoot /vaw/www/html
<Directory />
Options SymLinksIfOwnerMatch
</Directory>

●

Ao acessar este site, o Apache é forçado a
executar uma função lstat() em:
/var
/var/www
/var/www/html
/var/www/html/index.html

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

22
Para os desenvolvedores

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

23
Carregar js depois da página
●

●

●

●

Não use async, defer ou posicione os scripts no
final da página: isso não funciona
Javascripts que não estão envolvidos na
exibição inicial da página só devem ser
carregados depois da página completa
Coloque em um arquivo separado, scripts que
monitoram clicks, posição de mouse e coisas
assim
Use o código mostrado a seguir ao final da sua
página, antes da tag </body>

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

24
Carregar js depois da página
●

Exemplo prático
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "scripts.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

25
Outras otimizações
●

Apache Extended Status

●

Swapiness

●

Buffer Size

●

Max Open Files

●

PHP Safe Mode

●

etc...

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

26
Perguntas?

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

27
Muito Obrigado

Marcos Sungaila
marcos@savant.com.br

21.fev.2014

Marcos Sungaila – marcos@savant.com.br

CC Attribution-ShareAlike 3.0 Unported License

28

Mais conteúdo relacionado

PDF
Mysql Replication
PDF
Tutorial mysql
PDF
Gerência de redes utilizando o cacti
PPTX
ENIC/UFPB 2009. Arquitetura de Segurança Baseada em Security Paterns Para o O...
PDF
Meetup São Paulo, Maxscale Implementação e Casos de Uso
PDF
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
PDF
Apache Security Chp2
PDF
Wordpress Security
Mysql Replication
Tutorial mysql
Gerência de redes utilizando o cacti
ENIC/UFPB 2009. Arquitetura de Segurança Baseada em Security Paterns Para o O...
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Apache Security Chp2
Wordpress Security

Destaque (6)

PDF
Addressing Challenges In App Security
PPT
Setting Up Security on Apache
PDF
Hardening Apache Web Server by Aswin
PDF
Sicherheit von Webanwendungen
PDF
Domino HTTP Security - Neuerungen
PDF
Fragmentation in mobile design: fact or fiction
Addressing Challenges In App Security
Setting Up Security on Apache
Hardening Apache Web Server by Aswin
Sicherheit von Webanwendungen
Domino HTTP Security - Neuerungen
Fragmentation in mobile design: fact or fiction
Anúncio

Semelhante a Apache Performance Tuning (20)

PDF
Tuning Apache/MySQL/PHP para desenvolvedores
PDF
Otimização de infra estrutura para hospedagem de websites
PDF
Aumente a performance de seu site de maneira disciplinada
PDF
Otimizacao de websites em PHP
PPT
Aumente a performance de seu site de maneira disciplinada
PPT
Aumente a performance de seu site
PDF
Melhorando o desempenho do seu WordPress
PDF
Melhorando a performance de aplicações com o uso do MemCache
PPTX
06 - Servidor Apache
PDF
Vamos conversar sobre cache
PDF
Um milhao tdc2014sp Apresentação por Fernando Ike
PDF
Um milhao de usuários simultâneos
PDF
Ebook Apache Server: Guia Introdutório
PDF
Desenvolvendo aplicativos web escaláveis
PDF
Cache e Performance (in portuguese)
PDF
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
PDF
Apache
PDF
Meu Plone Site está lento. O que fazer???
PDF
Apache proxy
PDF
Apache
Tuning Apache/MySQL/PHP para desenvolvedores
Otimização de infra estrutura para hospedagem de websites
Aumente a performance de seu site de maneira disciplinada
Otimizacao de websites em PHP
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site
Melhorando o desempenho do seu WordPress
Melhorando a performance de aplicações com o uso do MemCache
06 - Servidor Apache
Vamos conversar sobre cache
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao de usuários simultâneos
Ebook Apache Server: Guia Introdutório
Desenvolvendo aplicativos web escaláveis
Cache e Performance (in portuguese)
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Apache
Meu Plone Site está lento. O que fazer???
Apache proxy
Apache
Anúncio

Último (20)

PPTX
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Émile Durkheim slide elaborado muito bom
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Aula sobre banco de dados com firebase db
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PPTX
Aula 18 - Manipulacao De Arquivos python
Curso de Java 13 - (JavaEE (JSP e Servlets)).pptx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Apple Pippin Uma breve introdução. - David Glotz
COBITxITIL-Entenda as diferença em uso governança TI
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Curso de Java 9 - (Threads) Multitarefas.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Émile Durkheim slide elaborado muito bom
Processos na gestão de transportes, TM100 Col18
Aula sobre banco de dados com firebase db
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Curso de Java 14 - (Explicações Adicionais (Classes Abstrata e Interface)).pptx
Aula sobre desenvolvimento de aplicativos
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Aula 18 - Manipulacao De Arquivos python

Apache Performance Tuning

  • 1. Apache Performance Tuning 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 1
  • 3. Warning "Premature optimization is the root of all evil." Donald Knuth 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 3
  • 4. Configuração básica ● ● ● A configuração padrão do Apache é bem versátil Usando servidores standard, o Apache pode atender a alguns milhares de conexões por dia sem otimizações Essa configuração pode ser melhorada ampliando ou reduzindo os recursos disponíveis por meio de seus módulos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 4
  • 5. Otimização ● Como medir a performance do Apache? – – httperf – ● Apache HTTP server bench marking tool The Grinder, a Java Load Testing Framework Não há outra forma de medir essa performance? – 21.fev.2014 A mais importante métrica que pode ser verificada é a percepção do usuário Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 5
  • 6. Otimização ● 21.fev.2014 Por onde começar? Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 6
  • 7. RAM ● Siga aquele ditado que diz: Quanto mais, melhor! ● ● ● Se possível tenha o máximo de memória que o servidor, o sistema operacional e seu bolso permitirem Mais memória permite um maior número de processos ou threads Maior número de requests simultâneos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 7
  • 8. Módulos padrão ● ● ● A carga de módulos usa mais memória e ativa sequências de verificação adicionais Inclui rotinas a serem executadas em todas as chamadas Vários módulos que vêm configurados por padrão só são usados em casos específicos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 8
  • 9. Módulos padrão ● Desative módulos desnecessários ● Alguns módulos para verificar se você precisa deles: – authn_alias_module – authn_anon_module – authn_dbm_module – authnz_ldap_module – authz_dbm_module – authz_owner_module – ext_filter_module – file_cache_module – info_module – ldap_module – mem_cache_module – status_module – speling_module – usertrack_module – proxy_module – proxy_balancer_module – proxy_ftp_module – proxy_http_module – proxy_ajp_module – proxy_connect_module 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 9
  • 10. Módulos padrão ● ● O principal objetivo em desativar módulos não é liberar memória mas sim reduzir o número de rotinas executadas em cada request A redução no consumo de memória acontece como um bônus 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 10
  • 11. mod_mem_cache ● ● É útil para criar cache de conteúdo gerado localmente ou quando o apache atua como um proxy reverso Este módulo cria um cache independente por processo – não compartilhável entre processos 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 11
  • 12. mod_disk_cache ● ● ● Também é usado para criar cache de conteúdo gerado localmente ou quando o apache atua como um proxy reverso O cache é criado em uma pasta especificada e pode ser acessado por todos os processos/ threads do apache Ao usar mod_disk_cache configure um disco separado, de alta performance – SSD se possível – , como cache 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 12
  • 13. mod_disk_cache ● ● ● ● Quantidade de pastas para cache pode ser configurada com CacheDirLength e CacheDirLevels Cuidado com CacheDirLength para não criar poucas pastas ou uma quantidade muito grande Prefira uma estrutura com CacheDirLevels=1 para reduzir o tempo de limpeza do cache Execute o daemon htcacheclean para evitar o acumulo desnecessário de arquivos sem uso 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 13
  • 14. mod_disk_cache ● Como configurar mod_disk_cache LoadModule disk_cache_module modules/mod_disk_cache.so <IfModule mod_cache.c> <IfModule mod_disk_cache.c> CacheEnable disk / CacheIgnoreHeaders Set-Cookie CacheRoot "/var/cache/httpd_cache" CacheDirLength 2 CacheDirLevels 1 </IfModule> <IfModule> ● Habilitar o daemon htcacheclean htcacheclean -d30 -n -t -p /var/cache/httpd_cache -l 512M 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 14
  • 15. mod_disk_cache ● Como saber se a página foi servida a partir do cache ou processada? LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{Age}o"" combined 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 15
  • 16. Logs ● ● ● ● Uso intensivo de I/O Deve usar um disco separado do disco do conteúdo do apache Preferencialmente discos SAS – não precisa ser SSD Considere o uso do log do sistema 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 16
  • 17. Persistent connections ● Vantagens – – ● É mais eficiente manter uma conexão ativa para enviar um segundo arquivo Atender a mais de um request por conexão Desvantagens – Pode prejudicar em sites onde só há solicitações de um único arquivo – Mantém uma conexão ativa por mais tempo 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 17
  • 18. Persistent connections ● Opções de configuração LoadModule headers_module modules/mod_headers.so KeepAlive on MaxKeepAliveRequests 100 KeepAliveTimeout 15 <ifModule mod_headers.c> Header set Connection keep-alive </ifModule> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 18
  • 19. .htaccess ● ● Usado para tornar mais flexível a configuração de sites no Apache Deve ser habilitado no httpd.conf pela tag AllowOverride ● A tag AllowOverRide força o Apache a fazer varreduras em todas as pastas a partir de / à procura de arquivos .htaccess 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 19
  • 20. .htaccess ● Com esta configuração DocumentRoot /var/www/html <Directory /> AllowOverride all </Directory> ● Ao acessar este site, o Apache é forçado a procurar por .htaccess em: /.htaccess /var/.htaccess /var/www/.htaccess /var/www/html/.htaccess 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 20
  • 21. SymLinks ● Há duas opções para permitir o uso de links simbólicos FollowSymLinks SymLinksIfOwnerMatch ● A segunda opção é mais segura porém, do ponto de vista de performance, é extremamente onerosa. 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 21
  • 22. SymLinks ● Com esta configuração DocumentRoot /vaw/www/html <Directory /> Options SymLinksIfOwnerMatch </Directory> ● Ao acessar este site, o Apache é forçado a executar uma função lstat() em: /var /var/www /var/www/html /var/www/html/index.html 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 22
  • 23. Para os desenvolvedores 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 23
  • 24. Carregar js depois da página ● ● ● ● Não use async, defer ou posicione os scripts no final da página: isso não funciona Javascripts que não estão envolvidos na exibição inicial da página só devem ser carregados depois da página completa Coloque em um arquivo separado, scripts que monitoram clicks, posição de mouse e coisas assim Use o código mostrado a seguir ao final da sua página, antes da tag </body> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 24
  • 25. Carregar js depois da página ● Exemplo prático <script type="text/javascript"> function downloadJSAtOnload() { var element = document.createElement("script"); element.src = "scripts.js"; document.body.appendChild(element); } if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else window.onload = downloadJSAtOnload; </script> 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 25
  • 26. Outras otimizações ● Apache Extended Status ● Swapiness ● Buffer Size ● Max Open Files ● PHP Safe Mode ● etc... 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 26
  • 27. Perguntas? 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 27
  • 28. Muito Obrigado Marcos Sungaila marcos@savant.com.br 21.fev.2014 Marcos Sungaila – marcos@savant.com.br CC Attribution-ShareAlike 3.0 Unported License 28