Que ideia genial pedir envolvimento da comunidade para montar essa lista srdavidsilva! Quero fazer minha contribuição:
Cache com stale-while-revalidate
Isso foi uma das últimas coisas mais legais que aprendi sobre APIs e pode revolucionar a performance de uma aplicação (caso ela possa se utilizar desse recurso) e o princípio por trás já está no nome stale-while-revalidate
que traduzindo fica mais ou menos como "obsoleto enquanto revalida".
Imagina uma aplicação onde você faz uma request GET
contra um endpoint /users
e esse endpoint naturalmente retorna todos os usuários. Dado as características dessa aplicação de exemplo, esse é um endpoint muito devagar de retornar, chegando a demorar 10 segundos a cada request.
Por não ser um endpoint que você não precisa dos dados em tempo-real, ao aplicar o cabeçalho stale-while-revalidate
, a primeira request contra esse endpoint continuará devagar da mesma forma como antes, mas terá um efeito colateral muito importante que é o resultado ter sido cacheado (e você pode definir as regras do cache). Mas isso significa que uma segunda request vai ser respondida instantâneamente (talvez com dados obsoletos), mas que por trás dos panos, o backend está fazendo uma nova consulta para atualizar esse cache o mais rápido que conseguir.
Então todas as requests dali para frente são respondidas instantaneamente, enquanto o backend se responsabiliza por ficar somente atualizando esse cache. Se você notar, isso é duplamente poderoso, pois você tira o peso do lado do client (do lado que consome o dado) e principalmente tira o peso do lado do server (do lado que produz o dado) porque independente da quantidade de requests que chegarem, todas vão cair o cache e o server vai só trabalhar uma vez.
Isso eu aprendi usando o Next.js junto com a CDN da Vercel, mas isso não é exclusivo deles. Hoje no TabNews isso está sendo usado na página de status mas eu quero fazer um ajuste na configuração do stale-while-revalidate
.