Dei uma olhada no código e há várias partes meio estranhas. Não sei se vai funcionar bem. A estrutura é verificar se há cache e, se não houver, o servidor envia novamente uma requisição POST para o endpoint, então seria preciso ter dois endpoints, e como a ideia é fazer cache completo da query GraphQL, acho que também não deve haver muitos casos de uso.
En...tão, qual é a melhor forma de configurar cache para GraphQL? Como os parâmetros das requisições GraphQL podem variar conforme o caso, mesmo que eu monte o cache por conta própria, se eu também configurar um cache no lado do servidor, acho que não vai ser muito diferente do DacheQL. Existe alguma abordagem melhor? A pergunta me surgiu de repente e quis perguntar!
Normalmente, parece que o cache é feito usando um data loader em nível de recurso. Não é que não dê para usar uma abordagem dessas, mas há poucos casos de uso para essa biblioteca, e como o endpoint fica dividido em dois, ela também acaba sendo mais fácil de atacar e tem muitas desvantagens. Na hora de fazer uma requisição de recurso, se surgir até mesmo uma única chave, o cache já deixa de ser aproveitado.
3 comentários
Dei uma olhada no código e há várias partes meio estranhas. Não sei se vai funcionar bem. A estrutura é verificar se há cache e, se não houver, o servidor envia novamente uma requisição POST para o endpoint, então seria preciso ter dois endpoints, e como a ideia é fazer cache completo da query GraphQL, acho que também não deve haver muitos casos de uso.
En...tão, qual é a melhor forma de configurar cache para GraphQL? Como os parâmetros das requisições GraphQL podem variar conforme o caso, mesmo que eu monte o cache por conta própria, se eu também configurar um cache no lado do servidor, acho que não vai ser muito diferente do DacheQL. Existe alguma abordagem melhor? A pergunta me surgiu de repente e quis perguntar!
Normalmente, parece que o cache é feito usando um data loader em nível de recurso. Não é que não dê para usar uma abordagem dessas, mas há poucos casos de uso para essa biblioteca, e como o endpoint fica dividido em dois, ela também acaba sendo mais fácil de atacar e tem muitas desvantagens. Na hora de fazer uma requisição de recurso, se surgir até mesmo uma única chave, o cache já deixa de ser aproveitado.