Skip to content

Commit 0144e6e

Browse files
committed
feat: add maxAge for ssr
1 parent ad8939a commit 0144e6e

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

lib/commands/start.js

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const Renderer = require('docsify-server-renderer')
66
const fs = require('fs')
77
const util = require('../util/index')
88
const chalk = require('chalk')
9+
const LRU = require('lru-cache')
910

1011
var defaultConfig = {
1112
template: `<!DOCTYPE html>
@@ -37,7 +38,7 @@ function loadConfig (config) {
3738
module.exports = function (path, configFile, port) {
3839
let config = defaultConfig
3940
const pkg = util.pkg()
40-
let ctx = util.cwd('.')
41+
const ctx = util.cwd('.')
4142

4243
path = path || './'
4344

@@ -50,37 +51,51 @@ module.exports = function (path, configFile, port) {
5051
const tpl = pkg.docsify.template
5152

5253
config = pkg.docsify
53-
config.template = (tpl && util.exists(util.resolve(ctx, tpl)))
54-
? util.read(tpl)
55-
: defaultConfig.template
54+
config.template =
55+
tpl && util.exists(util.resolve(ctx, tpl))
56+
? util.read(tpl)
57+
: defaultConfig.template
5658
}
5759

5860
var renderer = new Renderer(Object.assign(defaultConfig, config))
5961
var server = connect()
62+
const cached = new LRU(config.maxAge || 0)
6063

6164
server.use(serveStatic(path))
62-
server.use(function(req, res) {
65+
server.use(function (req, res) {
6366
serveStatic(path)(req, res, function () {
64-
if (/\.(jpg|jpeg|gif|png|svg|ico|mp4|webm|ogg|ogv|js|css|md)(?:\?v=[0-9.]+)?$/.test(req.url)) {
67+
if (
68+
/\.(jpg|jpeg|gif|png|svg|ico|mp4|webm|ogg|ogv|js|css|md)(?:\?v=[0-9.]+)?$/.test(
69+
req.url
70+
)
71+
) {
6572
res.writeHead(404)
6673
res.end()
6774
}
68-
renderer.renderToString(req.url)
75+
76+
Promise.resolve(cached.get(req.url) || renderer.renderToString(req.url))
6977
.then(function (html) {
78+
cached.set(req.url)
7079
res.end(html)
7180
})
7281
.catch(function (err) {
82+
console.error(err)
7383
res.writeHead(404)
7484
res.end()
7585
})
7686
})
7787
})
7888
server.listen(port || 4000)
7989

80-
const msg = '\n'
81-
+ chalk.blue('[SSR]')
82-
+ ' Serving ' + chalk.green(`${path}`) + ' now.\n'
83-
+ 'Listening at ' + chalk.green(`http://localhost:${port}`) + '\n'
90+
const msg =
91+
'\n' +
92+
chalk.blue('[SSR]') +
93+
' Serving ' +
94+
chalk.green(`${path}`) +
95+
' now.\n' +
96+
'Listening at ' +
97+
chalk.green(`http://localhost:${port}`) +
98+
'\n'
8499

85100
console.log(msg)
86101
}

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@
3232
"connect-livereload": "^0.6.0",
3333
"cp-file": "^4.1.1",
3434
"docsify": ">=3",
35-
"docsify-server-renderer": "^4.1.9",
35+
"docsify-server-renderer": "^4.5.7",
3636
"fs-extra": "^2.1.2",
3737
"livereload": "^0.6.2",
38+
"lru-cache": "^4.1.1",
3839
"open": "^0.0.5",
3940
"serve-static": "^1.12.1",
4041
"update-notifier": "^2.1.0",

0 commit comments

Comments
 (0)