【问题标题】:Preprocessing via express middleware or through build system通过快速中间件或构建系统进行预处理
【发布时间】:2013-05-17 19:34:22
【问题描述】:

通过中间件(使用 express)预处理静态资源是否适合生产环境?据我了解,中间件堆栈针对每个请求依次运行。那岂不是意味着预处理中间会在每次请求后重新生成一个静态资源(即 some_styles.less -> some_styles.css)?如果是这样,提前通过诸如 grunt.js 之类的构建系统进行预处理并提供这些文件会更好吗?我希望将 css 和 js 的最终渲染连接到一个文件并缩小。

另外,是否值得在只有静态内容的页面上从模板(如玉)预渲染 html?还是这比它的价值更麻烦?

【问题讨论】:

    标签: node.js express preprocessor middleware gruntjs


    【解决方案1】:

    处理 CSS 和 JS 预处理和缩小的最简单方法是通过某种构建系统,无论是 grunt、cake 等。它还可能提供一些性能优势;至少,它减少了服务器的工作量。

    对于我的项目,我的 Cakefile 中有处理 CSS 和 JS 的任务。这些是通过运行构建任务来调用的,并且只是输出到通过app.use("/res", express.static("RESDIR")) 设置的静态文件目录。

    至于预渲染 HTML,它将提供性能优势。除非这样做非常复杂,否则我会继续并轻松地预渲染所有内容。预先做好比在路上固定要简单得多(如果你期待任何形式的增长,它在未来可能很重要)。

    【讨论】:

    • 非常感谢您的帮助。为了清楚起见,中间件每次都会重新生成?还是仅在文件更改时?我知道这会对服务器征税,我只是想知道多少。
    • 中间件没有理由必须为每个请求进行生成;这只是意味着您观看相关文件并将结果保存在内存中或最终将其写入磁盘。除非您需要大规模扩展,否则中间件将起作用;使用我的部署方式,提前做所有事情效果更好(它减少了在低内存/CPU 机器上的应用启动时间)。
    猜你喜欢
    • 1970-01-01
    • 2011-03-22
    • 2021-01-09
    • 2011-02-10
    • 2018-06-07
    • 2019-12-01
    • 2021-11-06
    • 1970-01-01
    • 2010-11-02
    相关资源
    最近更新 更多