2016-04-27 4 views
0

ノードエクスプレスサーバでレスポンスをキャッシュするためにスーパーエージェントキャッシュを使用しています。 ので、要求はこのように書きます:異なるパラメータに対してスーパーエージェントキャッシュを使用してHTTP応答をキャッシュする

myServer.com/api/posts?id=21 

とキャッシングは完璧に動作します。 NodeがAPIサーバーからの応答をフェッチすると、APIを何度も呼び出すのではなく、同じデータをすべての訪問ユーザーに渡します。

問題は、ユーザーのIDをリクエストに追加することです。したがって、新しいリクエストは次のようになります。

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

キャッシングはユーザー固有のものになります。 Superagentはそれを別個の要求として受け取り、各ユーザーごとに毎回それを取得します。それは冗長です。私はスーパーエージェントにuserId paramを避けるように伝える方法はありますか?

答えて

1

私はsuperagent-cacheの著者です。あなたがそれを楽しんでうれしい!

.pruneParams chainableを使用すると、特定のパラメータでクエリを実行できますが、生成されたキーの一部としてそのパラメータを使用せずにキャッシュできます。解決のための

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

ありがとう:

あなたの新しいコードは次のようになります!私はこれを試してみる。その間、私はこのエラー 'cache-module:.set()がタイプcache-module {name: 'CacheModuleSetException'、'のキャッシュに失敗しました。 PM2コンソールに表示されています。何か案は ? –

+0

固定したスーパーエージェントキャッシュのバージョンは?どのような状況下で起こっているのですか? – jpodwys

+0

私はスーパーエージェントには '1.7.2'、スーパーエージェントキャッシュには'^1.4.1'を使用しています。 API応答をキャッシュしようとすると、ノードサーバー上でランダムに起こっています。 –

関連する問題