Implemented wait in generate function so generation of dynamic routes with ajax calls are not all sceduled simultaneously, possibly flooding the data backend with queries.

Use generate.wait (ms) to stagger route generate calls over time.

Fixes #590.
This commit is contained in:
johan.roxendal@gu.se 2017-04-24 10:30:05 +02:00
parent 8cbdf77c34
commit afa2e6b05c
2 changed files with 19 additions and 1 deletions

View File

@ -89,11 +89,28 @@ export default function () {
this.routes.push(route)
}
})
var n = 0
function timer () {
let promise = new Promise(
(resolve, reject) => {
setTimeout( () => {
resolve()
}, self.options.generate.wait * n)
}
)
n++
return promise
}
let routes = this.routes
return co(function * () {
while (routes.length) {
yield routes.splice(0, 500).map((route) => {
return co(function * () {
if(self.options.generate.wait) {
yield timer()
}
var { html } = yield self.renderRoute(route, { _generate: true })
html = minify(html, self.options.generate.minify)
var path = join(route, sep, 'index.html') // /about -> /about/index.html

View File

@ -4,6 +4,7 @@ module.exports = {
'/users/1',
'/users/2',
'/users/3'
]
],
wait : 1000
}
}