用的 express
项目结构是这么回事,其实就是个模拟登录:
传入 url ,账户,密码三个参数,来获取 html
传入 url ,账户,密码三个参数,转发给 dom_agent.js ,然后解析各个类型的 html ,并且按照定义好的格式返回字典( JSON )
用 var router = express.Router(); router.get
来定义路由,转发请求给 parser ,
很诡异的问题就是,明明请求的 a 路由, parser a 打印出来的 url 也是正确的,最后返回的数据格式也是正确的,就是数据不对,数据是另外一个网址的
这还不是最诡异的,最诡异的是,低频率测试的时候,都是没问题的(比如上线前的本地测试),一到生产环境,如果持续请求一个 url ,过不了几次,返回的数据就变成了其余 url 的,而且不固定,不固定啊不固定,不固定啊不固定😂
数据格式对,就是内容完全混乱
已经排查过的有:
开始我以为是没有 return 掉,所以接着执行了,哪个快就返回哪个,所以
但是发现没用,再一想,根本不是哪个快就返回哪个,因为数据格式是对的,请求的肯定是对应的路由,所以才能发给对应的 parser ,并没有往下执行
然后我怀疑是模块的缓存,查查资料,说 Node.js 的模块缓存是用来提高加载速度,貌似没关系
再有可能就是传入的参数,也就是那个 url 参数,被缓存了,但是貌似也不对,因为帐号密码没缓存(并没有发现返回其余用户的数据,只是返回自己其余 url 的数据)
也可能跟代码风格有关,我现在写法是
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.