Json応答でexpress.jsでcach-controllポリシーを設定する方法は?私のjson応答はまったく変わらないので、積極的にキャッシュしたいと思います。静的ファイルでキャッシュする方法を見つけましたが、動的データでキャッシュする方法を見つけることができません。
洗練されていない方法は、JSON出力の前にres.set()
の呼び出しを追加するだけです。そこで、キャッシュ制御ヘッダーを設定するように指定することができ、それに応じてキャッシュします。
res.set('Cache-Control', 'public, max-age=31557600'); // one year
別のアプローチは、ルートのJSON応答にres
プロパティを設定し、フォールバックミドルウェア(エラー処理の前)を使用してJSONをレンダリングおよび送信することです。
app.get('/something.json', function (req, res, next) {
res.JSONResponse = { 'hello': 'world' };
next(); // important!
});
// ...
// Before your error handling middleware:
app.use(function (req, res, next) {
if (! ('JSONResponse' in res) ) {
return next();
}
res.set('Cache-Control', 'public, max-age=31557600');
res.json(res.JSONResponse);
})
編集:Express v4のres.setHeader
からres.set
に変更
たとえば、次のようにできます。
res.set('Cache-Control', 'public, max-age=31557600, s-maxage=31557600'); // 1 year