Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens

Post on 29-Jun-2015

587 views 0 download

description

Palestra proferida em 20/04/2013 na DrupalCamp São Paulo 2013.

Transcript of Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens

Drupal PerformanceDicas e técnicas para levar seu Drupal às nuvens

Drupalcamp São Paulo 2013 by Paulino Michelazzo

Por quê WPO?web performance optimization

43%

57%

3 sec> 3 sec

57% dos visitantes de sites de viagens saem após 3 segundos

25% mobile

1 segundo é...

- 11%pageviews

- 7%conversões

- 16%satisfação

1.6 bilhões de dólares em vendas anuais

25% de acréscimo em pageviews7 a 12% aumento nas vendas50% de redução de hardware

tempo é dinheiro

definindo performance

é lento ou está lento?

O Drupal é lento?

Não!Desenvolvedores e e designers o tornam lento

1ª regra

definir se o website é lento ou se ele está lento

o que é lento?

aquilo que impacta na conversão de usuários

14% 86%

backend frontend

10.91.6

Top 300K

80 a 90% das lesmas estão no

front-end

Mate-as antes

2ª regra

80 ~ 90% no Drupal

tema

• Arquivos JavaScript

• Arquivos CSS

• Imagens

• Requisições HTTP

• DNS Lookup’s

3 arquivos

ativar

1 arquivo

JavaScript

• Colocá-los no fim do código

• Minificar arquivos

• Carregar arquivos externos assincronamente

• Combinar arquivos

Carga assíncrona

var script = document.createElement('script'), scripts = document.getElementsByTagName('script')[0];script.async = true;script.src = url;scripts.parentNode.insertBefore(script, scripts);

FiF - frame in frame(function() { var url = 'http://example.org/js.js'; var iframe = document.createElement('iframe'); (iframe.frameElement || iframe).style.cssText = "width: 0; height: 0; border: 0"; iframe.src = "javascript:false"; var where = document.getElementsByTagName('script')[0]; where.parentNode.insertBefore(iframe, where); var doc = iframe.contentWindow.document; doc.open().write('<body onload="'+ 'var js = document.createElement(\'script\');'+ 'js.src = \''+ url +'\';'+ 'document.body.appendChild(js);">'); doc.close();}());

https://www.facebook.com/note.php?note_id=10151176218703920

8 arquivos

3 arquivos

ativar

CSS

• Colocá-los no início do código

• Minificar arquivos

• Fugir de @import

• Combinar arquivos

98k 25k

73k

Imagens

53k 1.9k

51.1k

97%

Imagens

Imagens

• JPG

• Progressivas

• Qualidade

• PNG

• Indexadas

DPI não se usa em monitor!!!

requisições HTTP

• Não fazer

• Não fazer

• Precisa fazer, reduza

• (menos css, menos js, menos imagens)

o terror da requisição

404

DNS Lookup’s

• Reduza

• Reduza

• Precisa mesmo? Traga para mais perto

• perto = dentro

3ª regra

10 e 20%rede e servidor

difícil, mas não impossível

tempo para 1º byte

DNS lookup

Conexão inicial

Tempo de espera

10 ~ 20% no Drupal

cache• APC - Alternative PHP Cache

• cache de código PHP

• Memcached

• cache banco e código

• Varnish

• cache não-autenticado

boost

• Módulo que não depende de terceiros para funcionamento

• Alternativa ao Varnish

views• views cache

• basta ativar

• views litepager (drupal.org/project/views_litepager)

• remove query COUNT

• não apresenta nº total de páginas

• não permite navegação para última

cache de blocos

• Reduz o tempo de carga de blocos

• Maravilhoso em conjunto com memcache

Tips & Tricks

• realpath_cache_size = 64K (monitore)

• query_cache_size = 128M

• query_cache_limit = 1M

• Database logging (dblog)

• Statistics

• PHP filter

Corram!!!!!

Last words

• Otimização é trabalhosa

• mas o resultado vale a pena

• Otimização é experiência

• combinar ingredientes e cenários

obrigado

Paulino Michelazzo

about.me/pmichelazzo