吴世剑
小度鱼作者,野生设计师,野生程序员。
关注

[网站更新] 此次优化花费了一些时间,主要在查找内存溢出的问题上。

1、修复内存溢出问题

之前版本内存一直都非常的稳定,但经过一次大的改动,React hooks + React router + TypeScript,重写后出现了内存溢出的问题,各种排查花费多日,终于找到了问题原因。


原因是:我在服务端创建的Apollo Client,是全局使用的,然而使用client发送GraphQL api请求的时候,它会有缓存机制,储存在它自己的store,如果不主动去清除的话,store就会一直涨一直涨,最后内存也一直涨,导致了内存溢出的情况。


创建apollo client的代码

https://github.com/54sword/xiaoduyu.com/blob/master/src/app/common/graphql.ts#L18


解决办法1:需要增加一些机制,主动调用 client.clearStore() 清理store。

解决方法2:Apollo Client不全局使用,每次GraphQL api请求的时候,创建新的 Apollo Client。


目前小度鱼相关服务的运行情况:


2、api请求速度小优化

在服务端发起api请求,如果前端和api是同一台机器或有内网,可以使用127.0.0.1或内网ip,请求速度会快一些。原来在服务器请求api的地址是https://www.xiaoduyu.com/graphql ,然后换成了 http://127.0.0.1:3000/graphql


原因:在服务器上ping www.xiaoduyu.com ,需要耗时2ms左右,ping 127.0.0.1 只需要0.02ms。


3、将剩余未重写的js,使用ts重写

4、修复了各种bug


1条评论 / 1条回复

这次改动只是前端的改动,还是后端也有些变化?

回复

只是前端的改动,后端没变!

7月20日
回复