From 69f0ee23be6eaf0fa860df45b92ae6108214d84b Mon Sep 17 00:00:00 2001 From: jomo Date: Wed, 22 Apr 2015 00:06:10 +0200 Subject: [PATCH] use new response module for assets unfortunately we can't use stream pipes because we need to generate a hash of the content for the Etag. I think proper caching (i.e. Etag) is very important --- lib/server.js | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/server.js b/lib/server.js index 37e7f20..2f90489 100644 --- a/lib/server.js +++ b/lib/server.js @@ -18,20 +18,20 @@ var routes = { capes: require("./routes/capes") }; -function asset_request(req, res) { +// serves assets from lib/public +function asset_request(req, callback) { var filename = path.join(__dirname, "public", req.url.path_list.join("/")); fs.exists(filename, function(exists) { if (exists) { - res.writeHead(200, { - "Content-type": mime.lookup(filename), - "Cache-Control": "max-age=7200, public", // cache for 2 hours + fs.readFile(filename, function(err, data) { + callback({ + body: data, + type: mime.lookup(filename), + err: err + }); }); - fs.createReadStream(filename).pipe(res); } else { - res.writeHead(404, { - "Content-type": "text/plain" - }); - res.end("Not Found"); + callback({}); } }); } @@ -95,7 +95,9 @@ function requestHandler(req, res) { }); break; default: - asset_request(req, res); + asset_request(req, function(result) { + response(req, res, result); + }); } } catch(e) { var error = JSON.stringify(req.headers) + "\n" + e.stack;