Gotit改进与待做

Gotit 近段时间的改进和以后一段时间内的更新计划,挖坑的时间到了,准备跳票。

改进

  • 使用requests替代urllib requests的确是HTTP library human, 自动处理文字编码、灵活的cookie操作,的确赏心悦目!并且它的cookie支持pickle,因此可以直接将每次的请求缓存到redis,相对于以前缓存整个对象到内存中的全局字典,不得不说更稳定灵活了好多!

  • 重写正方查询的类与缓存机制 原来的正方类是与自己写的缓存紧密耦合的,旧的缓存机制使用内存全局字典作为存放地点,创建缓存与缓存过期判断都是由多个线程判断,并且某些线程在特定条件下还会创建更多子线程,到了最后虽然能正常工作但不得不说成了像shi一样的代码。现在所有缓存都放在redis中,缓存的过期时间完全由redis控制,只在用户每次查询操作时重置缓存时间就可以了。

  • 完善异常处理 一直没有想到正方教务系统竟然有那么多的报错提醒,由于其多数请求异常都是弹窗提醒,所以可以通过特定的正则表达式匹配出多数的弹窗提醒,在每次页面请求后都会检测是否有弹窗警告,主要是登录时候的报错,新生没有更改初始密码是不能进行查询的。

  • 彻底放弃了bs3分支 bs3分支就是上面说的时候大量线程进行提前缓存,当时还写了一篇博客,后来发现,出现的问题远大于解决的问题,并且大量线程在正方系统发生宕机或者其他异常时候会一直阻塞,也一直找不到合适的解决方案,痛苦了好久后决定放弃该分支,继续升级维护2.0-stable分支。但是已经将bs3中的Bootstrap3界面迁移到了2.0分支。

待做

  • 优化缓存 有些时候用户查询到的内容是没有发生变化的,打算将用户查询到的内容缓存到redis中,并且某些时候(例如过年前后)正方教务系统可能会直接停止,在这种情况下可以通过使用长期缓存。

另外可以在用户查询单个内容时,为用户将其他内容缓存。(例如当张三在查询当前学期成绩时,返回成绩后继续将他的课表、绩点、考试时间等内容缓存,如果他继续查询其他内容,响应速度将会大量提高,不再受正方、网络延时的影响。

  • 优化移动端页面

移动端的浏览量与PC端的浏览量相差无几, 移动端需要优化的主要是查询结果页面的表格,前段时间迁移bootstrap3后使用了bs的响应式表格,但是在uc浏览器上无法使用,所以又添加了一个表格调整的按钮切换回旧的样式。这也是一个急需解决的问题。

  • 网站后台 话说到现在为止gotit是没有网站后台的,所有的配置都是写在配置文件中,好吧,话说主要是想偷懒。现在后台已经在开发之中,包括每个页面的公告、网站公告、捐献者等内容,当然还有网站的各种日志,也不希望每次都要远程到服务器上才能看到到底发生了什么。

还有一个目的就是积累用户啦,主要推广方法还是靠下一个内容了。

  • 成绩更新提醒 成绩提醒,就是在成绩更新后及时通知给相应的用户,这里只要保留cookie就行了,不过由于神一样的正方教务系统在大量请求下极其脆弱,每一次宕机cookie就失效了,再由于中文验证码的存在,还没有完善的解决方案,所以算是一个超级Beta内容了,将来只会对捐献者开放这项功能。

Comments