Node 搭建一个静态资源服务器的实现

2020-06-17 05:51:05易采站长站整理

}
}

module.exports = function isFresh (stats, request, response) {
refreshRes(stats, response);

const lastModified = request.headers['if-modified-since'];
const etag = request.headers['if-none-match'];

if (!lastModified && !etag) {
return false;
}
if (lastModified && lastModified !== response.getHeader('Last-Modified')) {
return false;
}
if (etag && etag !== response.getHeader('ETag')) {
return false;
}
return true;
};

最后修改 route.js 中的


// server/route.js
+ const isCache = require('./cache')

if (stats.isFile()) {
const mimeType = mime(filePath)
response.setHeader('Content-Type', mimeType)

+ if (isCache(stats, request, response)) {
response.statusCode = 304;
response.end();
return;
}

response.statusCode = 200
// fs.createReadStream(filePath).pipe(response)
let readStream = fs.createReadStream(filePath)
if(filePath.match(config.compress)) {
readStream = compress(readStream,request, response)
}
readStream.pipe(response)
}

重启 node server 访问某个文件,在第一次请求成功时 Respond Header 返回缓存时间:

一段时间后再次请求该资源文件,Request Header 发送协商请求字段:

以上就是一个简单的 Node 静态资源服务器。希望对大家的学习有所帮助,也希望大家多多支持软件开发网。