Tweak some cache TTLs

This commit is contained in:
MICHAEL JACKSON 2017-08-11 19:17:02 -07:00
parent 7abb881795
commit 0d004b581b
2 changed files with 16 additions and 10 deletions

View File

@ -38,7 +38,7 @@ const fetchMutex = createMutex(function (packageName, callback) {
callback(null, value) callback(null, value)
}) })
} else { } else {
// Cache valid package info for one minute. // Cache valid package info for 1 minute.
PackageInfoCache.set(packageName, value, 60, function () { PackageInfoCache.set(packageName, value, 60, function () {
callback(null, value) callback(null, value)
}) })

View File

@ -5,7 +5,7 @@ const Metadata = require('./MetadataUtils')
const { generateDirectoryIndexHTML } = require('./IndexUtils') const { generateDirectoryIndexHTML } = require('./IndexUtils')
const { getContentType } = require('./FileUtils') const { getContentType } = require('./FileUtils')
function sendFile(res, file, stats, maxAge = 0) { function sendFile(res, file, stats) {
let contentType = getContentType(file) let contentType = getContentType(file)
if (contentType === 'text/html') if (contentType === 'text/html')
@ -14,7 +14,6 @@ function sendFile(res, file, stats, maxAge = 0) {
res.writeHead(200, { res.writeHead(200, {
'Content-Type': contentType, 'Content-Type': contentType,
'Content-Length': stats.size, 'Content-Length': stats.size,
'Cache-Control': `public, max-age=${maxAge}`,
'ETag': etag(stats) 'ETag': etag(stats)
}) })
@ -36,21 +35,28 @@ function serveFile(autoIndex, maximumDepth) {
// TODO: remove support for "json" query param // TODO: remove support for "json" query param
if (req.query.meta != null || req.query.json != null) { if (req.query.meta != null || req.query.json != null) {
Metadata.get(req.packageDir, req.file, req.stats, maximumDepth, function (error, metadata) { Metadata.get(req.packageDir, req.file, req.stats, maximumDepth, function (error, metadata) {
if (metadata) { if (error) {
res.set('Cache-Control', 'public, max-age=31536000').send(metadata) console.error(error)
} else {
res.status(500).send(`Cannot generate JSON metadata for ${req.packageSpec}${req.filename}`) res.status(500).send(`Cannot generate JSON metadata for ${req.packageSpec}${req.filename}`)
} else {
// Cache metadata for 1 year.
res.set('Cache-Control', 'public, max-age=31536000').send(metadata)
} }
}) })
} else if (req.stats.isFile()) { } else if (req.stats.isFile()) {
// Cache files for 1 year.
res.set('Cache-Control', 'public, max-age=31536000')
// TODO: use res.sendFile instead of our own sendFile? // TODO: use res.sendFile instead of our own sendFile?
sendFile(res, path.join(req.packageDir, req.file), req.stats, 31536000) sendFile(res, path.join(req.packageDir, req.file), req.stats)
} else if (autoIndex && req.stats.isDirectory()) { } else if (autoIndex && req.stats.isDirectory()) {
generateDirectoryIndexHTML(req.packageInfo, req.packageVersion, req.packageDir, req.file, function (error, html) { generateDirectoryIndexHTML(req.packageInfo, req.packageVersion, req.packageDir, req.file, function (error, html) {
if (html) { if (error) {
res.send(html) console.error(error)
} else {
res.status(500).send(`Cannot generate index page for ${req.packageSpec}${req.filename}`) res.status(500).send(`Cannot generate index page for ${req.packageSpec}${req.filename}`)
} else {
// Cache HTML directory listings for 1 minute.
res.set('Cache-Control', 'public, max-age=60').send(html)
} }
}) })
} else { } else {