2016-04-27 14 views
0

Ich verwende Superagent-Cache zum Zwischenspeichern von Antworten auf Node Express-Server. So geht die Anfrage wie folgt aus:Zwischenspeichern von HTTP-Antworten mit Superagent-Cache für verschiedene Parameter

myServer.com/api/posts?id=21 

Und das Caching funktioniert perfekt. Sobald Node die Antwort vom API-Server abruft, werden die gleichen Daten an alle Besucher weitergegeben, anstatt die API immer wieder aufzurufen.

Jetzt ist das Problem, dass ich Benutzer ID der Anfrage hinzufügen möchte. So wird die neue Anfrage:

myServer.com/api/posts?id=21&userId=123 

Jetzt wird das Caching benutzerspezifisch. Superagent nimmt es als separate Anfrage und holt es jedes Mal für jeden Benutzer. Was ist überflüssig? Gibt es eine Möglichkeit, dass ich Superagenten sagen kann, userId param zu vermeiden?

Antwort

1

Ich bin der Autor von superagent-cache. Froh, dass du es genießt!

Sie können die .pruneParams chainable verwenden, um eine Abfrage mit einem bestimmten Parameter auszuführen, aber ohne diesen Parameter als Teil des generierten Schlüssels zwischenzuspeichern.

Ihr neuer Code sollte wie folgt aussehen:

superagent 
    .get('myServer.com/api/posts') 
    .query({id: id, userId: userId}) 
    .pruneParams(['userId']) 
    .end(function (error, response){ 
    // handle response 
    } 
); 
+0

Danke für die Lösung! Ich werde es versuchen. Inzwischen erfahre ich diesen Fehler 'cache-module: .set() 'ist fehlgeschlagen für den Cache vom Typ cache-modul {name:' CacheModuleSetException ','. Es wird in der PM2-Konsole angezeigt. Irgendwelche Ideen ? –

+0

An welche Version von Superagent-Cache sind Sie angeheftet? Und unter welchen Umständen passiert es? – jpodwys

+0

Ich verwende '1.7.2' für Superagenten und'^1.4.1' für Superagenten-Cache. Es passiert zufällig auf dem Node-Server, wenn versucht wird, die API-Antwort zu cachen. –