最近选课系统比往年卡顿的多得多,基本上还没动一动就卡,之前还是刷新慢,现在直接将浏览器卡死
觉得有点蹊跷,就用Fiddler进行抓包过滤,发现比以前多了一些东西(之前分析过选课系统的逻辑,本来想写个抢课的,结果太懒不想写了2333)
从图上可以看到,选课网页一直在定时查询当前学生选中的所有课程的权重情况(蓝色链接),这种轮询间隔时间很短,而且每个链接只查询一门课的权重。
在现在同学们都在选课的时候,服务器应该压力会很大(一直在做查询),导致查询的时候返回时间有时候很长,由于不是很清楚前端,所以不清楚这个是不是让浏览器卡死的原因,但是这个的确是让页面动不动卡死的原因(当这些请求加载完之后,选课页面就会很顺滑233)
暂时的解决办法
注:这个方法只能暂时解决浏览选课页面动不动卡住的问题,不能解决访问教务系统缓慢的问题(这个是服务器压力太大了,没办法,谁让是土豆服务器呢)
既然这些请求返回时间很长,那能不能在本机拦截这些请求直接返回呢(不能不返回结果,不然会一直提示响应失败,如下图,更烦)
我使用Fiddler的Auto Responder拦截了这些请求(后面会说具体的步骤),都返回权重值为0,这样页面是不卡了,可以流畅地查看课程,但是却有一个问题,就是我的所有投出去的权重都变成了0,而且在修改权重的时候提示权重上限为0,暂时还没找到解决方法,只能在需要修改权重的时候将Auto Responder关闭,就恢复正常了
创建Auto Responder的方法
下载并安装Fiddler,打开Fiddler开始抓取浏览器的包,然后在浏览器中访问选课页面,就能在Fiddler中看到抓到的请求
在Fiddler的右边找到Auto Responder
进入之后,在左边选择要拦截的查询权重的链接,具体的网址为
/eams/stdVirtualCashElect!getLessonCost.action(只用选择一个就可以),然后点击Add Rules,然后记得勾选Unmatched requests passthrough
- 点击Inspectors,然后选中之前成功返回的请求,右边会出现响应内容
- 点击下方的View in Notepad,会将响应内容以记事本打开,然后将打开的文本文件另存为一个htm文件到某个位置(我保存到了桌面),
注:解释一下这里的响应内容,可以看到这里面的响应内容有一个0,代表我这门课投的是0权重,这个响应内容不同没有关系,只要是符合规范的响应内容都可以
- 返回Auto Responder,选中之前插入的要拦截请求的规则,在下方的Rule Editor中点击下拉箭头,在下拉列表中选择Fild a file...
选择之前保存的htm文件
- 选择之后点击旁边的Save保存,然后勾选Enable Rules就可以执行拦截,选课页面就不会卡了,但是你的权重值就不能被修改,如果需要修改权重值,则把Enable rules取消勾选就可以