2016-10-27 1 views
0

ExpressとNodeを使用してWebを構築しています。クライアントはRESTful APIを使用してJsonレスポンスを取得してオブジェクトのリストを表示します。Express JSのキャッシュからのJsonレスポンスの防止

新しいオブジェクトを作成した後、アプリケーションは更新されたオブジェクトリストの新しいjson応答を要求する必要があります。 Chromeはうまくいきます - 新しいJsonレスポンスがステータスコード200 OKで返されました。しかし、IEとEdgeではうまくいかないことがあります。新しいリクエストを行うのではなく、ブラウザからキャッシュからのjsonレスポンス(ステータスコード304)を取得するだけです。ブラウザのキャッシュデータを手動で消去しても問題ありません。

私はこのソリューションを試みた:using a middleware to set max-age of cache-control res.header to be 0

function headerSet(req, res, next) { 
    res.header('Cache-Control', 'public, max-age=0'); 
    return next(); 
} 

を、レスポンスヘッダに、私は効果を取っaccordant設定を確認することができ、しかし、IEとエッジはまだ新しい要求を行うことを拒否する - 私はまだ未更新を取得していますjson response with 304.

どうしたのですか?

+0

[304](https://httpstatuses.com/304)は、データが変更されていないことをブラウザに知らせる_server_を意味します。だからあなたのサーバーロジックに何か不具合があります。問題の原因となっている特定のExpressミドルウェアを使用していますか? Expressの[etag'](http://expressjs.com/en/4x/api.html#etag.options.table)の設定を変更することもできます( 'strong'に変更してみてください)。 – robertklep

答えて

1

max ageを設定する代わりに、以下を試してみてください。

res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate'); 
関連する問題