mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-11 08:33:53 +00:00
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:
parent
8cbdf77c34
commit
afa2e6b05c
@ -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
|
||||
|
3
test/fixtures/basic/nuxt.config.js
vendored
3
test/fixtures/basic/nuxt.config.js
vendored
@ -4,6 +4,7 @@ module.exports = {
|
||||
'/users/1',
|
||||
'/users/2',
|
||||
'/users/3'
|
||||
]
|
||||
],
|
||||
wait : 1000
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user