08 de julho de 2020 • 5 min de leitura.
Introdução ao NextJS - Parte 2
Conheça quais são as vantagens e desvantagens do Static Site Generation, Client Site Rendering e Server Side Rendering.
Nesse post retorno para entendermos as vantagens e desvantagens de Static Site Generation, Client Site Rendering e Server Side Rendering. Caso ainda não tenha lido o primeiro artigo ou até mesmo gostaria de revê-lo, acesse o link a abaixo:
Introdução ao NextJS - Parte 1 | O que é, qual a diferença e quando usar ?
E o primeiro que veremos será o Static Site Generation. Sem mais enrolação vamos lá.
Static Site Generation (SSG)
Vantagens
Uso quase nulo do servidor
.
Como já foi renderizado antes os arquivos HTML, CSS e JS, o servidor não terá nenhum processo para rodar.Pode ser servidor em uma CDN (Content Delivery Network)
.
Consequentemente terá um cache melhor, pois não precisará pegar todas vez os dados, tendo no cache retornará dele e pronto.Melhor performance entre todos
.
As duas opções acima explica o motivo.Flexibilidade para usar em qualquer servidor
.
Qualquer servidor consegue rodar arquivos estáticos.
Desvantagens
Tempo de Build pode ser bem alto
.
Caso seu projeto tenha muitas páginas, precisará criar todas elas, essa ação é o processo do Build. Consequentemente o Build pode ser bem demorado. Algo que atrapalhará e muito.Dificuldades para escalar em aplicações grandes
.
Você terá que criar todas as páginas antes, e se a aplicação for muito grande, você terá bastante dificuldades para controlar isso.Dificuldades para realizar atualizações constantes
.
Caso sua aplicação precisar de atualizações constantes, tipo um E-Commerce. Toda hora terá que realizar um Build novo, e se cada Build levar em torno de 15 minutos por exemplo, toda alteração por mais simples que seja levará os 15 minutos.
Bom, citamos um pouco das vantagens e desvantagens que o Static Site Generation
nos oferece. Seguiremos para o próximo tipo abaixo:
Single Page Application (SPA)
Vantagens
Permite páginas ricas em interações sem recarregar
.
Depois de baixado o App, tudo será feito no browser. Onde não precisará mais ficar dando reload na página.Site rápido após o load inicial
.
Após feito o load inicial, foi baixado todo o JavaScript da aplicação. Depois de baixado ele já carregou todos arquivos que precisa para ser exibido em tela.Ótimo para Aplicações Web
.
Por exemplo: Facebook Web, Spotify Web, Twitter Web e tantos outros que utilizam o tipo SPA.Possui diversas bibliotecas para trabalhar
.
Desvantagens
Load inicial pode ser muito grande
.
Se seu arquivo JavaScript for muito grande, irá demorar mais para iniciar e ser exibido o site.Performance imprevisível
.
Pois cada página você terá arquivos JavaScript grandes e pequenos, onde acaba tendo algumas inconsistências.Dificuldades no SEO
.
Como o arquivo JavaScript é carregado antes, para então fazer requisições na Api e assim poder renderizar. Acontece que ali você ainda não tem o conteúdo, você tem apenas o esqueleto do site e assim o Googlebot (Robô do Google) dificilmente encontrará o seu site.
Bom, citamos um pouco das vantagens e desvantagens que o Server Side Rendering nos oferece. Seguiremos para o próximo e último tipo abaixo:
Server Side Rendering (SSR)
Vantagens
Ótimo em SEO
.
Pois tudo é renderizado no lado do servidor. Quando o Googlebot (Robô do Google) abre a página do site ele recebe os dados e já tem tudo pronto pra ele. Consequentemente ele indexa muito melhor seu site.Meta tags com previews mais adequados
.
As meta tags já estão com os previews certos, pois ele consegue fazer toda a parte descrita acima, que é pegar os dados como o: título, descrição, imagens e tudo mais. Logo as meta tags estarão corretas de acordo com a aquela página em si.Melhor performance para o usuário
.
Isso quer dizer que o conteúdo será visto mais rápido. Como já entregamos tudo pronto e foi renderizado tudo no servidor não terá demora.Menor processamento do lado do cliente
.
Como assim? Como foi dito acima, tudo é renderizado no servidor. O browser do cliente não terá esforços para exibir o conteúdo em tela e assim tem uma vantagem para dispositivos mais fracos.
Desvantagens
TTFB (Time to first byte) maior
.
Acontece que o servidor irá preparar tudo antes para entregar o conteúdo. Então quando você acessa uma URL de um site por exemplo, terá todo o processo feito antes pelo servidor.HTML maior
.
Já que ele entrega todo o HTML montado, consequentemente será maior. Essa podemos talvez considerar até como uma "vantagem".Reload completo nas mudanças de rota
.
Toda vez que fazemos uma chamada, ele vai até o servidor e precisa recarregar para retornar o conteúdo. Porém da para disfarçarmos esse Reload da tela criando uma situação com Microinteração ou algo assim. Mas de qualquer forma ele precisará ir até o servidor para retornar o conteúdo.
Hoje vimos sobre os três tipos de aplicação e entendemos o fluxogramas, vantagens e desvantagens de cada um. Entendemos que o NextJS suporta o (SSG), (SSR) e também o (SPA). Essa é uma grande vantagem do NextJS.
Imagino que agora você está se perguntando:
Quando posso utilizar um ou outro ?
Vamos lá, entenderemos quando utilizar cada um deles:
Static Site Generation (Gatsby, NextJS)
- Quando a performance for muito importante.
- Site simples sem muita interação do usuário.
- Se você é a única pessoa que publica conteúdo.
- Se você faz pouca atualização no site.
- Se o site é simples com poucas páginas.
Exemplos: Portfólios, Blogs e Landing Pages.
Single Page Application (SPA)
- Quando não tem tanta necessidade de indexar informações no Google.
- Quando o usuário faz muitas interações nas páginas.
- Quando se tem informações diferentes para cada usuário (Por exemplo Autenticação).
Exemplos: Facebook Web, Spotify Web, Twitter Web.
Server Side Rendering
- Quando tem necessidade de um SPA, mas precisa de um loading mais rápido.
- Quando muda o conteúdo frequentemente.
- Quando trabalha com número muito grande de páginas.
- Quando precisa de uma boa indexação no Google.
Exemplos: E-Commerce e Sites de Notícias.
Conclusão
Bom, chegamos ao fim de mais um post, finalizando com a introdução sobre NextJS onde foi abordados em duas partes. Espero que vocês possam ter entendido o que é o NextJS e como ele funciona, quais as diferenças dele para outros Frameworks existentes e também quais tipos utilizar de acordo com suas necessidades.
No próximo post iremos conhecer e entender um pouco sobre o GraphQL.
Até a próxima...