Configurando seu .htaccess para maior desempenho do seu site

Configurando seu .htaccess para maior desempenho do seu site

27/06/2017 às 18:20Hospedagem de Sites

Quando falamos de desempenho na entrega dos websites pelo servidor devemos lembrar que vários são os fatores que vão aumentar ou diminuir essa eficiência, já falamos em outro artigo diferenças entre a hospedagem dedicada e a compartilhada , o que vai tirar algumas dúvidas quando falamos de um projeto que consome muitos recursos e precisa de velocidade.

Ainda que diversos ajustes sejam feitos para que sua hospedagem seja eficiente, você pode ajustar ainda seu .htaccess para melhorar um pouco mais a performance do seu projeto. Por exemplo, em todos o planos de hospedagem de site ou hospedagem cloud otimizações customizadas são feitas e já entregues aos clientes, como trabalhamos com duas camadas de processamento de arquivos (nginx e apache), você pode trabalhar no seu arquivo .htaccess para ajustes mais finos e necessários ao seu projeto, tais como redirecionamentos, configuração de rotas das páginas, cache de arquivos, páginas de erro, entre outras coisas.

Onde o .htaccess pode te ajudar?

São muitas as aplicações do arquivo, mas vamos listar as mais comuns e que na maioria das vezes pode ser aproveitada por qualquer projeto. Das diretivas mais usadas podemos citar:

- Restrição de acesso com senha;

- Bloqueio de arquivos ou diretórios;

- Redirecionamento para páginas de erro personalizadas;

- Uso de URLs amigáveis aos motores de busca;

- Controle de cache de arquivos;

- Compressão gzip por padrão para otimizar os arquivos;

Por padrão qualquer (ou a grande maioria) serviço de hospedagem habilita o uso do htaccess, basta que o arquivo seja criado nas pastas correspondentes. Na raiz do seu site o .htaccess toma conta de todos os arquivos e pastas, já o uso nas subpastas controla apenas ela e suas pastas, isso é útil para diferentes ajustes de acordo com a url acessada.

Um ponto importante é, ainda que o objetivo seja a malhora da performance do seu website e algumas melhorias, você não deve abusar no uso de regras, analise sempre a real necessidade de criar regras, deixe seu arquivo o mais limpo possível para que seja útil e não crie o efeito contrário ao seu objetivo, comece a fazer seu projeto perder performance.

Como analisar as regras que você precisa?

Já falamos diversas vezes do GTMetrix, sem dúvidas quando o assunto é análise e melhora de performance é a ferramenta mais indicada para te guiar corretamente nesse percurso. Na área de guias você pode encontrar diversas recomendações e quando cada uma delas deve ser aplicada, assim apenas o necessário será usado.

Um ótimo exemplo para você usar

O projeto HTML5 Boilerplate traz um htaccess muito completo e que pode ser acessado na página oficial do projeto (.htaccess Boilerplate), está bem comentado e com muitas das diretivas padrões para um excelente desempenho, tendo ele como ponto de partida você pode aproveitar as dicas do GTMetrix e ver como elas são aplicadas no modelo do projeto HTML5.

Se você ainda precisa de mais performance pode ler um pouco mais sobre Servidor VPS, para quem ele é indicado?, podemos inclusive te auxiliar na melhor escolha de acordo com a demanda do seu projeto.

O que faz o htaccess do projeto ser bem completo se dá pelos comentários do código, são bem direcionados as suas fontes de consulta, muitas delas dicas de empresas de tecnologia como a Mozilla, W3C, Chromium, além da própria Apache e blogs de especialistas em performance e segurança. Outros destaque são o bloqueio de pastas sem um arquivo índex, o que evita a visualização da sua estrutura de arquivos, bloqueio do acesso a arquivos de log, backup, configuração, e outros dados sensíveis que possam estar online.

Dicas importantes

Se você tem um plano com SSL ativo é muito importante que sempre redirecione para https://.

# ----------------------------------------------------------------------
# | Forçar protocolo `https://`                                                 |
# ----------------------------------------------------------------------

# Redireciona todo o tráfego `http://` para `https://`.

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} !=on
   RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

Para evitar o conteúdo duplicado nos resultados de busca (o que não é bem visto pelo Google), defina qual o padrão da URL que seus visitantes vão acessar, então você deve forçar ou não o uso de www (não use as duas regras juntas, opte por uma delas).

# Acesso SEM www: www.examplo.com.br → examplo.com.br

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L]
</IfModule>

# Acesso COM www: examplo.com.br → www.examplo.com.br

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{SERVER_ADDR} !=127.0.0.1
    RewriteCond %{SERVER_ADDR} !=::1
    RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Comprimir os arquivos no momento da entrega vai com certeza ajudar no processamento e na velocidade da entrega desses arquivos, o apache trabalha com o gzip para que isso seja possível, então habilite e configure os tipos de arquivo que você usa em seu projeto e remova os que serão desnecessários, lembre-se de manter o seu arquivo o mais limpo possível.

# ----------------------------------------------------------------------
# | Compressão gzip                                                    |
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

    # Force compression for mangled `Accept-Encoding` request headers
    # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html

    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
        </IfModule>
    </IfModule>

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    # Compress all output labeled with one of the following media types.
    #
    # (!) For Apache versions below version 2.3.7 you don't need to
    # enable `mod_filter` and can remove the `<IfModule mod_filter.c>`
    # and `</IfModule>` lines as `AddOutputFilterByType` is still in
    # the core directives.
    #
    # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype

    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE "application/atom+xml" \
                                      "application/javascript" \
                                      "application/json" \
                                      "application/ld+json" \
                                      "application/manifest+json" \
                                      "application/rdf+xml" \
                                      "application/rss+xml" \
                                      "application/schema+json" \
                                      "application/vnd.geo+json" \
                                      "application/vnd.ms-fontobject" \
                                      "application/x-font-ttf" \
                                      "application/x-javascript" \
                                      "application/x-web-app-manifest+json" \
                                      "application/xhtml+xml" \
                                      "application/xml" \
                                      "font/eot" \
                                      "font/opentype" \
                                      "image/bmp" \
                                      "image/svg+xml" \
                                      "image/vnd.microsoft.icon" \
                                      "image/x-icon" \
                                      "text/cache-manifest" \
                                      "text/css" \
                                      "text/html" \
                                      "text/javascript" \
                                      "text/plain" \
                                      "text/vcard" \
                                      "text/vnd.rim.location.xloc" \
                                      "text/vtt" \
                                      "text/x-component" \
                                      "text/x-cross-domain-policy" \
                                      "text/xml"

    </IfModule>

</IfModule>

A performance aumenta drasticamente se você trabalhar bem com os arquivos em cache, então não deixe de definir o tempo de cache dos arquivos que você usa em suas páginas.

# ----------------------------------------------------------------------
# | Expires headers                                                    |
# ----------------------------------------------------------------------
#
# https://httpd.apache.org/docs/current/mod/mod_expires.html

<IfModule mod_expires.c>

    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"

  # CSS

    ExpiresByType text/css                              "access plus 1 year"

  # HTML

    ExpiresByType text/html                             "access plus 0 seconds"


  # JavaScript

    ExpiresByType application/javascript                "access plus 1 year"
    ExpiresByType application/x-javascript              "access plus 1 year"
    ExpiresByType text/javascript                       "access plus 1 year"

  # Other

    ExpiresByType text/x-cross-domain-policy            "access plus 1 week"

</IfModule>

 

Ainda teríamos diversos itens para listar e dizer o quanto são importantes, mas sugerimos que leiam nossos próximos artigos que com certeza vão continuar abordando ótimos temas.

Conclusão

O artigo foi um pouco longo mas vimos como alguns ajustes podem te ajudar com performance e segurança do seu projeto, ainda são muitos os ajustes possíveis que não falamos mas isso é algo mais técnico e é sempre bom você adicionar apenas as regras que você entende e que vão ser realmente usadas. Esses ajustes são importantes mas sozinhos podem não entregar o resultado esperado, por isso tenha sempre em mente que um serviço de qualidade fará toda a diferença.

Gostou de nosso post? Compartilhe: