3
ミドルウェアによって直接nginxによって提供される静的ファイルへのリクエストをキャッシュしようとしました。エクスプレスミドルウェアでステータスコードを取得
コアコードは:
function PageCache(config) {
config = config || {};
root = config.path || os.tmpdir() + "/_viewcache__";
return function (req, res, next) {
var key = req.originalUrl || req.url;
var shouldCache = key.indexOf("search") < 0;
if (shouldCache) {
var extension = path.extname(key).substring(1);
if (extension) {
} else {
if (key.match(/\/$/)) {
key = key + "index.html"
} else {
key = key + ".html";
}
}
var cacheFilePath = path.resolve(root + key)
try {
res.sendResponse = res.send;
res.send = function (body) {
res.sendResponse(body);
// cache file only if response status code is 200
cacheFile(cacheFilePath, body);
}
}
catch (e) {
console.error(e);
}
}
next()
}
}
は、しかし、私はコード404410500または何か他のものとresponeがキャッシュされるべきではありませんしながら、すべての応答は、どんなににステータスコードをキャッシュされていることがわかりました。
しかし、現在のリクエストのステータスコードを取得するために使用できるres.status
またはres.get('status')
のようなAPIは見つかりません。
代替ソリューションはありますか?
ステータスコードは、要求に対する応答はないために次の特定され、たとえば、 '' res.status(404).send(「OK」)を使用することができますホープ – farhadamjady