Оптимизация промежуточного программного обеспечения кэша - PullRequest
0 голосов
/ 14 января 2020

Я реализовал несколько простое решение для кэширования, которое в основном кэширует zip-файлы, запрашиваемые с указанного c URL. Причина, по которой я это делаю, заключается в том, что я не буду вызывать столько трафика c на основной сайт, с которого я запрашиваю данные. Единственная непосредственная проблема, которую я заметил, состоит в том, что в настоящее время я делаю два запроса на сайт, один для проверки правильности полученного ответа, а другой для фактического запроса данных. Есть ли простой способ объединить два? Я совершенно новичок в express, и синтаксис для меня довольно странный.

Основной код

app.use('/logapi', CacheMiddleware, function (req, res, next) {
    console.log("Api Request made for http://logs.tf/logs" + req.url)
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET, PUT, PATCH, POST, DELETE");
    res.header("Access-Control-Allow-Headers", req.header('access-control-request-headers'));
    request("http://logs.tf/logs" + req.url, function (error, response, body) {
        if ((response && response.statusCode) == 200) {
            let writeStream = fs.createWriteStream(zipCachePath + req.url);
            console.log("saving file");
            req.pipe(request("http://logs.tf/logs/" + req.url)).pipe(writeStream);
            writeStream.close;
        }
        else {
            console.log("Error received")
            next();
        }
    }).pipe(res);
});

Промежуточное программное обеспечение

let CacheMiddleware = (req, res, next) => {
    if (fs.existsSync(zipCachePath + req.url)) {
        console.log("Found File" + req.url + " in Cache. Sending...")
        res.sendFile(zipCachePath + req.url)
    }
    else{
        next();
    }
}

Если есть какие-либо другие возможные оптимизации, пожалуйста, дайте мне знать! (Возможно, запись в файл может быть улучшена)

Заранее спасибо!

...