Disable cache for failed requests

pull/9/head^2
Amio 2018-07-16 21:18:01 +08:00
rodzic 64b00052ee
commit 678021585a
1 zmienionych plików z 7 dodań i 8 usunięć

Wyświetl plik

@ -8,13 +8,14 @@ module.exports = function (router) {
const {
subject = name,
status = 'unknown',
color = 'grey'
color = 'grey',
fail = false
} = await fetchLiveParams(name, fn, params['*'])
const sharedMaxAge = (Math.random() * 60 + 60).toFixed()
const sharedMaxAge = fail ? '0' : (Math.random() * 60 + 60).toFixed()
res.writeHead(200, {
'Content-Type': 'image/svg+xml;charset=utf-8',
'Cache-Control': 'public, max-age=60, s-maxage=' + sharedMaxAge
'Cache-Control': 'public, max-age=20, s-maxage=' + sharedMaxAge
})
res.end(badgen({subject, status, color}))
})
@ -26,11 +27,9 @@ async function fetchLiveParams (scope, fn, paramsPath) {
if (waitings[fetchKey]) return waitings[fetchKey]
console.time(fetchKey)
const task = fn(...paramsPath.split('/'))
const timer = new Promise((resolve, reject) => setTimeout(reject, 30000))
waitings[fetchKey] = Promise.race([task, timer]).catch(e => {
console.error(e)
return {}
waitings[fetchKey] = fn(...paramsPath.split('/')).catch(e => {
console.error(fetchKey, e)
return { fail: true }
}).then(result => {
console.timeEnd(fetchKey)
waitings[fetchKey] = undefined