ExpressJs 不会在生产模式下缓存视图
ExpressJs doesn't cache views in production mode
当 NODE_ENV
设置为 production
时,ExpressJs
无法缓存我的 views
,我遇到了问题。我正在使用 EJS template engine
。这是我的代码:
npm 脚本
"start": "set NODE_ENV=production && node ./bin/www"
app.js
console.log(app.get('env')) => logs production
console.log(app.get('view cache')) => logs undefined
app.set('view cache', true)
console.log(app.get('view cache')) => logs true
所以当我将 NODE_ENV
环境变量设置为 production
时 ExpressJs
似乎没有启用视图缓存,但是当我通过调用 app.set('view cache', true)
手动启用它时它会。根据 ExpressJs
它应该默认启用视图缓存。
我确实测试了缓存是否有效,但只有在我手动启用它时才会有效。
首先 运行 你的应用程序 NODE_ENV=production node app.js
如果它 true
那么你应该在 package.json
.
中更改你的 start
属性
我明白了。问题不在于 ExpressJs
或 npm scripts
,而在于我使用的 shell 命令。
当使用 console.dir
时,我看到 NODE_ENV
被设置为 production
并带有一个额外的 space。将 npm 脚本更改为 "start": "set NODE_ENV=production&&node ./bin/www"
确实有效。
当 NODE_ENV
设置为 production
时,ExpressJs
无法缓存我的 views
,我遇到了问题。我正在使用 EJS template engine
。这是我的代码:
npm 脚本
"start": "set NODE_ENV=production && node ./bin/www"
app.js
console.log(app.get('env')) => logs production
console.log(app.get('view cache')) => logs undefined
app.set('view cache', true)
console.log(app.get('view cache')) => logs true
所以当我将 NODE_ENV
环境变量设置为 production
时 ExpressJs
似乎没有启用视图缓存,但是当我通过调用 app.set('view cache', true)
手动启用它时它会。根据 ExpressJs
它应该默认启用视图缓存。
我确实测试了缓存是否有效,但只有在我手动启用它时才会有效。
首先 运行 你的应用程序 NODE_ENV=production node app.js
如果它 true
那么你应该在 package.json
.
start
属性
我明白了。问题不在于 ExpressJs
或 npm scripts
,而在于我使用的 shell 命令。
当使用 console.dir
时,我看到 NODE_ENV
被设置为 production
并带有一个额外的 space。将 npm 脚本更改为 "start": "set NODE_ENV=production&&node ./bin/www"
确实有效。