Experimental cache control
This commit is contained in:
Bobby Wibowo 2019-01-06 04:09:47 +07:00
parent 69a7334aa4
commit 2f51954024
No known key found for this signature in database
GPG Key ID: 51C3A1E1E22D26CF
2 changed files with 35 additions and 8 deletions

View File

@ -298,6 +298,13 @@ module.exports = {
purgeCache: false
},
/*
ADVANCED: Use safe.fiery.me-exclusive cache control.
This will only work properly with certain settings in nginx reverse proxy and Cloudflare.
Do NOT enable unless you know what you are doing.
*/
cacheControl: false,
/*
Folder where to store logs.
NOTE: This is currently unused.

View File

@ -51,16 +51,36 @@ safe.use('/api/register/', limiter)
safe.use(bodyParser.urlencoded({ extended: true }))
safe.use(bodyParser.json())
const setHeaders = res => {
// Apply Cache-Control to all static files
res.set('Access-Control-Allow-Origin', '*')
res.set('Cache-Control', 'public, max-age=2592000, must-revalidate, proxy-revalidate, immutable, stale-while-revalidate=86400, stale-if-error=604800') // max-age: 30 days
if (config.cacheControl) {
safe.use('/', (req, res, next) => {
// max-age: 12 hours (aimed at the HTML pages themselves)
res.set('Cache-Control', 'public, max-age=43200, must-revalidate, proxy-revalidate, stale-while-revalidate=86400, stale-if-error=86400')
next()
})
const setHeaders = res => {
res.set('Access-Control-Allow-Origin', '*')
// max-age: 30 days
res.set('Cache-Control', 'public, max-age=2592000, must-revalidate, proxy-revalidate, immutable, stale-while-revalidate=86400, stale-if-error=604800')
}
if (config.serveFilesWithNode)
safe.use('/', express.static(config.uploads.folder, { setHeaders }))
safe.use('/', express.static('./public', { setHeaders }))
// Do NOT cache /api and /a routes
safe.use(['/api', '/a'], (req, res, next) => {
res.set('Cache-Control', 'no-store')
next()
})
} else {
if (config.serveFilesWithNode)
safe.use('/', express.static(config.uploads.folder))
safe.use('/', express.static('./public'))
}
if (config.serveFilesWithNode)
safe.use('/', express.static(config.uploads.folder, { setHeaders }))
safe.use('/', express.static('./public', { setHeaders }))
safe.use('/', album)
safe.use('/', nojs)
safe.use('/api', api)