Ich habe mir den Code kurz angesehen, und es gibt etliche Stellen, die mich stutzig machen. Ich bin mir nicht sicher, ob das zuverlässig funktioniert. Da die Struktur so ist, dass geprüft wird, ob ein Cache vorhanden ist, und wenn nicht, der POST-Request vom Server erneut an den Endpoint geschickt wird, braucht man zwei Endpoints, und da die GraphQL-Query vollständig gecacht wird, dürfte es auch nicht allzu viele Use Cases geben.
Hm ... wie sollte man dann einen GraphQL-Cache am besten aufbauen? Da sich die Parameter von GraphQL-Anfragen je nach Fall unterscheiden können, denke ich, dass selbst wenn ich den Cache direkt selbst aufbaue, ein serverseitiger Cache sich kaum von DacheQL unterscheiden würde. Gibt es vielleicht eine bessere Methode? Das hat mich gerade spontan neugierig gemacht, deshalb frage ich!
Normalerweise scheint man zum Caching Data Loader auf Ressourcenebene zu verwenden. Das heißt nicht, dass man so einen Ansatz nicht nutzen kann, aber es gibt nur wenige Use Cases für diese Bibliothek, und weil die Endpunkte in zwei aufgeteilt sind, ist sie auch leichter angreifbar und hat viele Nachteile. Schon wenn bei einer Ressourcenanfrage nur ein einziger Key entsteht, greift der Cache nicht mehr.
3 Kommentare
Ich habe mir den Code kurz angesehen, und es gibt etliche Stellen, die mich stutzig machen. Ich bin mir nicht sicher, ob das zuverlässig funktioniert. Da die Struktur so ist, dass geprüft wird, ob ein Cache vorhanden ist, und wenn nicht, der POST-Request vom Server erneut an den Endpoint geschickt wird, braucht man zwei Endpoints, und da die GraphQL-Query vollständig gecacht wird, dürfte es auch nicht allzu viele Use Cases geben.
Hm ... wie sollte man dann einen GraphQL-Cache am besten aufbauen? Da sich die Parameter von GraphQL-Anfragen je nach Fall unterscheiden können, denke ich, dass selbst wenn ich den Cache direkt selbst aufbaue, ein serverseitiger Cache sich kaum von DacheQL unterscheiden würde. Gibt es vielleicht eine bessere Methode? Das hat mich gerade spontan neugierig gemacht, deshalb frage ich!
Normalerweise scheint man zum Caching Data Loader auf Ressourcenebene zu verwenden. Das heißt nicht, dass man so einen Ansatz nicht nutzen kann, aber es gibt nur wenige Use Cases für diese Bibliothek, und weil die Endpunkte in zwei aufgeteilt sind, ist sie auch leichter angreifbar und hat viele Nachteile. Schon wenn bei einer Ressourcenanfrage nur ein einziger Key entsteht, greift der Cache nicht mehr.