Back-End

8 abr, 2013

Acelerando seu Drupal com Boost

Publicidade

É fato que o Drupal é um ótimo CMS, com milhares de módulos contribuídos, com uma comunidade super ativa, e dentre os outros CMSs mais conhecidos, é de longe o que mais cresce tendo grandes cases em âmbito público e privado.

Além disso, apesar de curva de aprendizado um pouco elevada, ou seja, quem está começando a mexer com Drupal sente muita dificuldade no primeiros passos, é possível ter um ganho de produtividade muito grande com suas funcionalidades “Out of the Box”, com o mínimo ou quase nada de programação. Porém, isso tem um preço. Já muito bem conhecido, o Drupal é muito pesado, e seu gargalo será quase sempre a performance, e na maioria dos casos, uma hospedagem barata não atenderá os requisitos necessários para o funcionamento do seu site neste CMS.

Quero demonstrar que através do módulo Boost, é possível tornar o seu site em Drupal muito mais rápido, com uma série de configurações. Para começar, o módulo Boost provê um cache estático das páginas acessadas para todo o acesso anônimo do site, ou seja, será gerado htmls com todo o conteúdo renderizado gerado pelo Drupal, e no próximo acesso, o cache será provido, ao invés do Drupal, com consultas na base de dados e tudo mais. Caso você utilize uma hospedagem compartilhada por motivos financeiros, ou caso não tenha habilidades para manter um VPS ou dedicado, esse com certeza será um módulo sempre usado nos seus projetos. Segundo descrito em sua página, ele é totalmente suportado pelo Apache, Nginx, Lighttpd e parcialmente suportado pelo IIS7. Irei demonstrar seu funcionamento com o Apache 2.

Abaixo um diagrama de seu funcionamento:

boost

Para iniciar, estou considerando que você já tenha um site Drupal em funcionamento, portanto, baixe a última versão estável do módulo em sua página oficial. Como estou utilizando a versão 7 do drupal, a última versão estável é a 7.x-1.0-beta2 [fig 1], portando, baixe o pacote, e descompacte na pasta (sites/all/modules).

art_boost_dl_link

Após isso, logado como administrador, acesse a tela de administração de módulos (/admin/modules), e o módulo Boost deverá estar listado [fig 2]. Habilite o módulo Boost.

art_boost_module_listagem

Após habilitado, é necessário uma série de configurações para o funcionamento correto do Boost. Para acessar as configurações, vá para Configuration > System > Boost (/admin/config/system/boost). Nessa primeira tela, é possível delimitar o cacheamento das páginas em: BOOST CACHEABILITY SETTINGS [fig 3], definindo um padrão ou lista de URLs a serem cacheadas ou ignoradas. Além de habilitar o cache para páginas HTML, XML, Jason/Ajax, com tempo mínimo e máximo de vida, em: BOOST CACHE TYPE SETTINGS [fig 4].

art_cacheability_settings

art_cache_type_settings

Nesta mesma tela, clique na aba (.HTACCESS) ou acesse a URL (/admin/config/system/boost/htaccess). No geral, é possível deixar as configurações padrões [fig 5], porém no caso de usar VirtualHost, ou ter várias URLs acessíveis para o mesmo site, é possível definir a Server URL dinâmica através de uma variável global, ou definir uma URL estática. E também definir o Document Root, e alguma configuração específica de ETags, e até mesmo, setar uma Boost Tag para identificar uma página cacheada.

art_htacess_settings

Após isso, é necessário ajustar o arquivo .htacess para poder prover os arquivos htmls gerados pelo módulo. Clique em “htaccess rules generation page” [fig 6], ou acesse a URL (/admin/config/system/boost/htaccess/generator). Será provido uma série de linhas de código que deverão ser colocadas dentro do .htacess do drupal.

art_htacess_link

### BOOST START ###
  # Allow for alt paths to be set via htaccess rules; allows for cached variants (future mobile support)
  RewriteRule .* - [E=boostpath:normal]
  # Caching for anonymous users
  # Skip boost IF not get request OR uri has wrong dir OR cookie is set OR request came from this server OR https request
  RewriteCond %{REQUEST_METHOD} !^(GET|HEAD)$ [OR]
  RewriteCond %{REQUEST_URI} (^/(admin|cache|misc|modules|sites|system|openid|themes|node/add|comment/reply))|(/(edit|user|user/(login|password|register))$) [OR]
  RewriteCond %{HTTPS} on [OR]
  RewriteCond %{HTTP_COOKIE} DRUPAL_UID [OR]
  RewriteCond %{ENV:REDIRECT_STATUS} 200
  RewriteRule .* - [S=3]
  # GZIP
  RewriteCond %{HTTP:Accept-encoding} !gzip
  RewriteRule .* - [S=1]
  RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html -s
  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html [L,T=text/html,E=no-gzip:1]
  # NORMAL
  RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html -s
  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_HOST}%{REQUEST_URI}_%{QUERY_STRING}\.html [L,T=text/html]
  ### BOOST END ###

É importante seguir as regras e colar o código no .htacess abaixo de:

  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
  # RewriteBase /

e acima de:

# Pass all requests not referring directly to files in the filesystem to
  # index.php. Clean URLs are handled in drupal_environment_initialize().

Além dessas configurações, todas as demais configurações do módulo podem ser deixadas o padrão. A partir daí, seu Drupal estará configurado para gerar o cache estático das páginas acessadas por usuários anônimos através do módulo Boost. Todo o html, será gerado em uma pasta chamada (cache), na raíz do drupal, portanto, certifique-se que a mesma, tenha permissão de escrita e leitura.

Para saber se a página está sendo cacheada pelo Boost, é incluído uma assinatura no código fonte, conforme a figura abaixo [fig 7].

art_boost_assinatura

É isso pessoal! Espero que tenha ajudado, e se essa informação foi útil para você, compartilhe!