文章目录
1 application域对象
1.1 项目一:邮件、站内信
存在问题:邮件、站内信的内嵌链接所携带的随机码被存放到application域对象中用于进行链接的有效性校验,但项目重启后,内存清空将会导致邮件、站内信的内嵌链接失效。
解决方案:将存放到application域对象的属性更改为存放到数据库。
1.2 项目二:小程序登录
存在问题:存放到application域对象的小程序用户登录态将拥有与应用相同的生命周期,无效的登录态将导致内存泄漏,占用内存资源。
解决方案:将存放到application域对象的属性更改为存放到数据库。
需要注意:目前的做法是,小程序端登录态完全由腾讯所提供的api确定,并且默认后端所提供的登录态(JSESSIONID)永不过期。但是,后端的登录态将在服务重启后失效,所以使用了过滤器进行拦截,当后端的登录态过期后小程序端将重新调用“登录”、“授权”两个接口进行再次认证。这种做法是错误的,建议使用上面所提供的解决方案,以避免“后端的登录态将在服务重启后失效”情况的发生。
2 小程序接口调用凭证access_token
2.1 项目二
存在问题:
- 问题一,上图第1点,同时启动不同环境将导致access_token被覆盖而失效。
- 问题二,上图第2点,access_token定时失效。
- 问题三,上图第3点,access_token有效时间可能改变。
解决方案:
- 对于问题一,每个使用到access_token的小程序接口调用,都要判断是否返回的是access_token过期的错误信息,如果返回access_token过期,则需要先刷新再重新调用,新老access_token在5分钟内同时有效。
- 对于问题二,使用定时任务定时刷新。
- 对于问题三,如果在被定时任务刷新之前access_token已经失效,那就手动刷新。
3 百万级数据量导出
3.1 项目四:题录导出
存在问题:多个用户同时进行海量数据导出时,将会发生内存溢出。
解决方案:
- 同步加锁
- 异步消息队列
4 模板文件
4.1 项目一的聘书模板、项目二的二维码模板、项目三的评价报告模板
存在问题:每次部署,需要手动把模板放置到配置文件所配置的磁盘路径,容易出错。
解决方案:将模板放到项目中。