zf-6-http源码 (10天)

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

猜你喜欢

转载自blog.csdn.net/weixin_42201346/article/details/102856947
今日推荐