Boas práticas para a página carregar mais rápido


Outra sugestão de título: "Como melhorar a performace da renderização das páginas do site"

Todo site deve ter uma boa performance para não prejudicar a experiência do usuário, por isso darei algumas dicas para a sua página carregar mais rápida. Durante todas as dicas, o foco principal será otimizar a folhas de estilo em cascata (CSS), o script (JavaScript) e diminuir ao máximo o número de requisições do navegador, e consequentemente, a renderização será rápida.

Uso de CSSs e scripts

Há três modos de usar JavaScript e CSS no site:

  1. Você pode definir o CSS através do atributo style="" e JavaScript pelo atributo onClick="" em qualquer tag HTML;
  2. Através da incorporação das tags HTML <style> e <script>;
  3. Usar folha de estilo externa com a tag <link> ou o script pelo atributo src="" na tag <script>

Os dois primeiros modos, apesar de reduzirem a quantidade de requisições ao carregar a página, aumenta o tamanho do documento. O CSS e JavaScript não são guardados no cache do navegador e também não é uma boa pratica para manutenção dos mesmos.

Entretanto, o terceiro modo, é recomendo quando os mesmos CSS e JavaScript são aplicados em várias páginas. Ao utilizar este método, você tem a vantagem de só precisar dá manutenção num único arquivo e será aplicado em todas as páginas, e também, é guardado no cache do navegador.

 

Renderização

Quanto a renderização, temos que ficar atentos para colocarmos os CSSs externos entre as tags <head> e </head> e os scripts no radapé. Quando um usuário abre uma página, o download da mesma ocorre do início para o final, então, se colocarmos o script para carregar logo no começo, o navegador irá requisitar todos esses scripts paralelamente antes de outras partes importantes, ou seja, os scripts atrasam a renderização da página. Mesmo a página sendo grande (demorada de carregar), quando se coloca os scripts no final do documento, para o usuário, há a impressão de que a página está carregando mais rápido.

No caso dos scripts, há o atributo async que avisa ao navegador para carregar de forma assíncrona, ou seja, ele adia o carregamento do script até que a página seja renderizada. Se você for usar em mais de uma importação com o atributo async, o navegador pode carregar em uma ordem não específica.

<head>
 <meta charset="UTF-8">
 <title>WM online</title>

 <!-- CSS -->
 <link rel="stylesheet" href="style.css" media="all">
</head>

<body>
 <p>Lorem ipsum dolor sit amet.</p>

 <!-- JS -->
 <script src="script.js"></script>
 <script asyn src="script.js"></script>
</body>

 

Compactando CSS e scripts

Quem desenvolve qualquer código desde o front-end até o back-end, tem que manter o código visualmente organizado com alinhamento e comentários para que outras pessoas entendam como funciona, e também, para você mesmo relembrar quando for dá manutenção. No entanto, quando o navegador carregar, o código não precisa está legível para nós, as pessoas, muitas das vezes, nem sabem que eles estão ali, o que elas querem é que a página funcione e seu carregamento seja o mais rápido possível. Por isso, compactar esses arquivos é a solução para diminuir o tamanho dos mesmos. Um exemplo ilustrativo, CSS de 600Kb depois de compactadas ficou com 350Kb.

Antes:

.center {
 width: 960px;
 margin: 0 auto;
}

/* --- Structure --- */

.intro {
 margin: 100px;
 position: relative;
}

Depois:

.center{width:960px;margin:0 auto}.intro{margin:100px;position:relative}

Manualmente, há diversos sites que tem ferramentas de compactar script e CSS, a dica que dou é você manter o seu script original com espaçamentos, aninhamento e comentários, e criar um novo arquivo contendo o código compactador, assim, na manutenção você edita o original, que é mais legível, recompacta, e atualiza o arquivo compactado.

Para quem usa pré-processadores de CCS como Sass, Less e Stylus, é possível configurar para que a copilação saia compactada. Já para quem usa Wordpress, por exemplo, há plugins que fazem essa compactação.

 

Unificação de CSS e scripts

Uma boa prática de organização é criar um arquivo para cada parte, pois na manutenção, fica simples identificar onde queremos fazer as alterações. No entanto, não é uma boa prática importar CSSs e scripts separadamente. O navegador não consegue lidar com muitas requisições paralelas, e também há um limite de requisições paralelas para um determinado domínio (dái os CDNs). O recomendado é você unificar estes arquivos, assim, haverá apenas uma requisição do gênero sendo feito pelo navegador e a página irá carregar mais rápido.
Obs.: na unificação lembre-se de manter a ordem de precedência tanto nas CSS quanto nos scripts.

Antes:

<!-- CSSs externos -->
<link rel="stylesheet" href="style.css" media="all">
<link rel="stylesheet" href="slide.css" media="all">
<link rel="stylesheet" href="banners.css" media="all">

<!-- scripts externos-->
<script src="jquery.slide.js"></script>
<script src="bootstrap.js"></script>
<script src="config.js"></script>

Depois

<!-- CSSs externos -->
<link rel="stylesheet" href="main.css" media="all">

<!-- scripts externos-->
<script src="main.js"></script>

 

Ao usar CSS externo prefira <link> ao invés de @import

O comando @import serve para importar uma CSS dentro de outra, porém com esse comando, o navegador é incapaz de fazer o download paralelo e atrasa na cascata o carregamento dos arquivos. Use a tag <link> para importar, ou use a boa prática citada anteriormente e coloque tudo em uma única folha de estilo sem @import ou mais uma tag <link>.

 

Use CSS Sprites

Suponhamos que você queira inserir emotions nos comentários, se você colocar cada imagem separada, o navegador tem que fazer uma requisição para cada uma delas, e isso acaba atrasando a renderização da página. Por este motivo a técnica de usar CSS Sprites é importante.

<!-- jeito não recomendado -->

<p>Lorem ipsum dolor sit amet. <img src="/emotions/feliz.png"></p>
<p><img src="/emotions/confuso.png"> Lorem ipsum dolor sit amet.</p>

 

<!-- jeito recomendado -->

<p>Lorem ipsum dolor sit amet. <span class="emotion feliz"></span> </p>
<p><span class="emotion confuso"></span> Lorem ipsum dolor sit amet.</p>

<style>
.emotion {
 background: url('/emotions/sprite.png') no-repeat;
}
.emotion.feliz {
 background-position: 0 -416px;
}
.emotion.confuso {
 background-position: 0 -557px;
}
</style>

Assim diminuímos a quantidade de requisições e alguns Kb de tráfego, que a depender da quantidade de visitas que você recebe por dia, pode fazer toda a diferença em gastar menos largura de banda.
Existem ferramentas online que serve para criar CSS Sprites:

  • O SpritePad é uma excelente ferramenta, você seleciona as imagens para criar o sprite e gera o CSS, você não tem trabalho para criar o código.
  • O Sprite Cow é muito boa também, porem seu uso é ideal para quem já tem uma imagem sprite e precisa apenas do CSS.

Otimize suas imagens

Os arquivos das imagens pode conter cores não visíveis por nós humanos e metadados desnecessário como data da foto, modelo da câmera, local etc. Para a renderização da página nada disso é importante, e, consequentemente, o tamanho do arquivo da imagem fica maior, a página fica mais pesado para carregar e você gasta a banda da sua hospedagem atoa, assim como o espaço de disco.

Há diversas ferramentas que pode compactar imagens sem perder qualidade, tanto no próprio computador, ou online. Um dos melhores serviços é Tiny PNG, você pode compactar várias imagens .png através da interface web e também pode usar o API.

Outra prática recomendado é usar carregamento de imagens progressivo, para quem não sabe o que é, garanto que já deve ter visto no Google Imagens quando for visualizar a imagem, progressivamente a imagem é carregada.

 

Analize o desempenho do seu site

O Google Analytics tem ferramentas que avalia e pontua as páginas do seu site, aí uma ótima oportunidade de acompanhar e otimiza-las. O Google valoriza páginas que carregam rapidamente.

Há diversas ferramentas online (sites) que você pode avaliar o desempenho do site e apontar onde você deve otimizar, veja alguns: PageSpeed Insights, Web Page Test e Pingdom.

Tags: desenvolvimento de sites, Web, agilidade
Via chatsuporte.at.ua

Total de comentários: 0
avatar