Deixe que o Apache processe todos os recursos estáticos
Pagamos barato ao contratar um serviço de hospedagem em servidor compartilhado, mas também pagamos caro se não criarmos um aplicação enxuta. Por mais simples que seja cada requisição no servidor utiliza ciclos do processador e memória, se não tomarmos cuidado o servidor irá gentilmente matar nosso processo para o bem das demais aplicações.
Recentemente tive problemas com um website na Dreamhost, o processo estava sendo sumariamente assassinado, a princípio estranhei, por ser uma aplicação simples em Rails e era feito cache de boa parte das páginas. Uma conversa com o suporte técnico e me disseram que o website em questão estava gastando muita memória.
Cinco minutos depois o Google (sempre ele
) já tinha uma solução para o meu caso. Eu simplesmente esqueci que existe o Apache para servir minha aplicação web. Para variar, bastaria alterar o bom e velho .htaccess. Estava acontecento o seguinte: todas as requisições de imagens, pdfs, htmls estáticos, rhtml, etc,… tudo que fosse estático ou dinâmico era processado pelo fastcgi em Ruby, que é claro fica dedicado a minha aplicação e possui um limite de memória para não prejudicar o servidor.
Com isso bastou algumas alterações no .htaccess para dizer ao Apache que cuide de processar todas as requisições de recursos estáticos:
RewriteCond %{REQUEST_URI} ^/images/(.*)$
RewriteCond %{REQUEST_URI} ^/javascripts/(.*)$
RewriteCond %{REQUEST_URI} ^/stylesheets/(.*)$
RewriteCond %{REQUEST_URI} ^/*.txt$
RewriteCond %{REQUEST_URI} ^/*.xml$
RewriteCond %{REQUEST_URI} ^/*.pdf$
E o problema foi resolvido, acompanhei os processos no servidor via ssh durante alguns dias e o uso de memória tinha diminuido assustadoramente, com isso tive tempo para estudar alguns outros detalhes para melhorar a aplicação.
Não tenho muita experiência em fazer melhorias no .htaccess, estejam a vontade para apontar outras melhorias.
E é isso, vou aproveitar e fazer uma propaganda da Dreamhost a qual até hoje só tenho elogios, muito eficientes e gentis no suporte, além do preço camarada e muita banda. A quem estiver interessado em criar uma conta por lá e ganhar um desconto de até 97 dólares, podem utilizar meu código de promoção: REFATORANDO. Que me desculpem aqueles que acham que blog não deveria ter propaganda, nada na vida é de graça ^_^
Uma boa semana a todos!
Bruno said,
August 6, 2007 @ 11:52 am
Opa,
pequena ferramenta/checklist/tips para melhorar a performance:
http://developer.yahoo.com/yslow/
Outra dica é: avaliar a hospedagem de determinados itens, como imagens, em outro servidor.
Carlos Oliveira said,
August 9, 2007 @ 6:15 am
Oi Bruno,
Muito bacana o YSlow, valeu pela dica !
Abraços