我的第一个NodeJS项目:websnap 基于phantomjs-node,提供网页快照服务,能够自动等待第一批ajax请求完成以保证生成完整的DOM。
内部实现上,并不是来一个请求开一个phantomjs实例来渲染,而是实现了一个页面管理器,同时开多个phantomjs实例(类似于用户开多个浏览器程序),每个实例开多个page(类似于浏览器开多个标签页),这样phantomjs实例可以重复利用,避免了频繁创建phantomjs进程的开销。同时,多实例、多page也提供了更高的并发能力。
项目地址:https://github.com/wonderbeyond/websnap
第一次写nodejs程序,感觉代码有点脏,不少地方实现的有点尴尬,快hold不住了。希望各位多指教!