cache(filePath,req,res,statObj){ // 协商缓存 对比
// 1) 文件可能没发生变化 但是修改时间变化了
// 2) 精确的时间不准确 会导致问题 同一时间内改了很多次
// 3) cdn 55 继续
// 指纹
// statObj.ctime 是一个时间类型
let lasModified = statObj.ctime.toGMTString();
let Etag = crypto.createHash('md5').update(fs.readFileSync(filePath)).digest('base64');
res.setHeader('Last-Modified',lasModified);
res.setHeader('Etag',Etag); // 真正的etag 可能只是文件的某一份
let ifModifiedSince = req.headers['if-modified-since'];
let ifNoneMatch = req.headers['if-none-match'];
if(ifModifiedSince && ifNoneMatch) {
if(ifNoneMatch !== Etag || ifModifiedSince !== lasModified){
return false
}
return true;
}else{
return false
}
// 如果指纹变了 就不是一个人 md5
// 我们可以计算文件md5戳 slice(20)
}
sendFile(filePath,req,res,statObj){
// 表示10s 内不要在访问服务器
res.setHeader('Cache-Co
zf-6-http源码 (10天)
猜你喜欢
转载自blog.csdn.net/weixin_42201346/article/details/102856947
今日推荐
周排行