Como funciona o status code 304?
Aqui é um lugar de conhecimento concreto, de pessoas que buscam e incentivam o aprendizado. Acho que vai ser o melhor lugar para falar sobre isso.
Recentemente, percebi que algumas requisições da API do nosso produto retornavam o status code 304, que nada mais é do que informar ao cliente que o recurso solicitado não teve alterações e, por isso, não precisa ser buscado novamente. O cliente pode usar o que já tem armazenado no cache. Fiquei muito intrigado com isso, pois só recebi o status 200 quando fui na base de dados e alterei um recurso relacionado àquilo. Até onde sei, não implementamos nada tão sofisticado, como cache, para melhoria de desempenho. Fiquei me perguntando se isso foi algo que o Render fez por baixo dos panos para nós ou se é uma funcionalidade natural da web. Para entender melhor, vou tentar expor minhas dúvidas:
Gostaria de entender duas coisas sobre isso:
- Esse status code já é configurado automaticamente nas nossas APIs por padrão?
- Para deixar a pergunta mais clara: o status 304 será retornado por padrão, sem nenhuma configuração, caso o sistema perceba que o recurso solicitado permanece o mesmo?
- Isso diminui o processamento da CPU?
- Explicando melhor: imagine que o cliente fez a solicitação pela segunda vez e nada mudou. Nessa situação, o sistema realiza todo o processamento novamente ou detecta de alguma forma que está tudo igual e simplesmente retorna o 304?
Bem, já fiz perguntas ao GPT e também pesquisei no Stack Overflow, mas as respostas para essas questões não ficaram muito claras para mim.
Edit:
Fazendo testes conectados à API local, recebo sempre o status code 200. Logo, acho que, de fato, é algo que o Render faz por debaixo dos panos e não algo que acontece de fábrica. Agora, a pergunta que fica é: como ele faz isso de forma tão minuciosa?