From 20c4926e13de4cbeef47c73f402bbcd08ab89f58 Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Mon, 28 Jan 2019 12:15:05 -0800 Subject: [PATCH] Lengthen cache ttl on 404s --- modules/middleware/findFile.js | 40 +++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/modules/middleware/findFile.js b/modules/middleware/findFile.js index 860c974..15dcc67 100644 --- a/modules/middleware/findFile.js +++ b/modules/middleware/findFile.js @@ -94,26 +94,24 @@ function searchEntries(tarballStream, entryName, wantsIndex) { const chunks = []; - stream - .on('data', chunk => chunks.push(chunk)) - .on('end', () => { - const content = Buffer.concat(chunks); + stream.on('data', chunk => chunks.push(chunk)).on('end', () => { + const content = Buffer.concat(chunks); - // Set some extra properties for files that we will - // need to serve them and for ?meta listings. - entry.contentType = getContentType(entry.name); - entry.integrity = getIntegrity(content); - entry.lastModified = header.mtime.toUTCString(); - entry.size = content.length; + // Set some extra properties for files that we will + // need to serve them and for ?meta listings. + entry.contentType = getContentType(entry.name); + entry.integrity = getIntegrity(content); + entry.lastModified = header.mtime.toUTCString(); + entry.size = content.length; - // Set the content only for the foundEntry and - // discard the buffer for all others. - if (entry === foundEntry) { - entry.content = content; - } + // Set the content only for the foundEntry and + // discard the buffer for all others. + if (entry === foundEntry) { + entry.content = content; + } - next(); - }); + next(); + }); }); }); } @@ -139,6 +137,10 @@ export default function findFile(req, res, next) { if (!foundEntry) { return res .status(404) + .set({ + 'Cache-Control': 'public, max-age=31536000', // 1 year + 'Cache-Tag': 'missing, missing-entry' + }) .type('text') .send(`Cannot find "${req.filename}" in ${req.packageSpec}`); } @@ -158,6 +160,10 @@ export default function findFile(req, res, next) { } else { return res .status(404) + .set({ + 'Cache-Control': 'public, max-age=31536000', // 1 year + 'Cache-Tag': 'missing, missing-index' + }) .type('text') .send( `Cannot find an index in "${req.filename}" in ${