最近有个需求需要后台调统计数据,直接生成图片吐到前端,本来以为比较简单的,结果中间还是遇到了很多问题:
环境:
windows:python 2.6+,visual stdio 2008 express开发包
linux:gcc,python 2.6+
node版本:v0.10.35
node组件:[email protected] [email protected] [email protected]
本来想把node升到最新版本,在安装jsdom的时候报错,只能回退
[email protected]支持node,更高版本只支持iojs
[email protected] 在Red Hat 4.4.7上安装报错,[email protected]安装成功
请求数据:
发httppost请求接口数据:
配置请求的header中Content-Length参数注意等于post数据的长度,原来没注意导致请求超时
注意header中Accept-Encoding参数是否配置了gzip,如果配置了gzip,返回时需要用zlib解压
highchart生成svg:
最大的问题是在浏览器可以生成svg,搬到node后不能生成,经过google,参数不断的排除,发现在highchart配置一定要增加下面几个:
chart: { margin: [50, 30, 70, 50],//不加这个显示不出来 width: 1000, forExport: true//不加这个会报错}
hightchart的版本使用的是v2.3.3,后台生成svg如果在图形上有标注,会显示不正常,使用最新版本会有改善。在本项目中发现使用rsvg转换png时,线宽异常,怀疑是rsvg版本太低导致的,在这个需求一定要使用rsvg转换,所以只能放弃使用最新版本的highchart
hightchart中datetime类型数据,需要加8个小时,保证显示正常,需要调整yAxis的x、y值,不然y坐标显示异常。
总结:node中模块开源,但是不同模块的版本兼容比较麻烦。后端node的模拟浏览器的的复杂展现中间可能有各种问题,碰到最麻烦的是不能调试,难以找到原因。
对于这个项目来说,可以考虑使用phantomjs解决