🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 前言 本文主要汇总nodejs在实践的时候遇到的一些实际的小问题的解决思路。 ## 问题列表 ### 模块功能有bug或者不符合预期 1 将模块源码下载,修改源代码 ,重新定义导出,要注意原来模块的包依赖问题。 2 因为在nodjs本身是基于模块库开发的,所以我们一般情况下也会基于这个体制进行开发,所以第二种方式是建议还是依赖原来的模块,然后重定义模块对应的方法,进行导出。(推荐方式) 3 如果模块源码大部分用不到,或者自定义的部分非常之多,建议彻底分析源代码,自己开发一个模块。 ### 业务处理优化 现在我们主要的服务端业务处理,主要对于页面逻辑的处理,如路由控制,会话处理,视图对象处理,模板渲染。我们在这些处理过程中进行了一些优化。 如何发现 node 的性能问题,主要可以使用 cpu-profile 进行 cpu 处理堆栈的抓取,然后使用 chrome 的 dev-tools 进行火焰图的分析,找到性能瓶颈。 计算密集型操作使用原生实现 js 是不擅长计算密集型的操作,如 Hash 处理,加密解密,压缩解压,像这些操作可以直接使用 nodejs 提供的原生实现(crypto, Zlib) ### 模板引擎优化 我们在实际使用过程中,发现模板的渲染是十分消耗性能的,特别的模板的预处理过程,如果预处理过程是在用户访问过程中去处理,会慢不止一个数量级,所以我们把预处理的过程提前了(改造了 hbs),在启动 web 应用时,已经预编译完成。同时我们发现 handlebars 的一些默认配置属性,如缩减处理,在字符串拼接过程中会损耗一定的性能,所以可以关闭 html 片段的缩减。 此外,我们还把可以缓存的 html 片段进行进程级的缓存,性能提升显著,可以把一些不怎么会变的 html 公共部分进行缓存。通过内部缓存刷新机制进行定时刷新 html 片段。 ###