背景:客户有台OA服务器,内网打开OA通讯录非常慢,大约需要3-4秒左右才能打开,即使同个用户2次打开同一个通讯录也同样要用3-4秒。考虑用ad的http缓存缓解一下这个情况。
测试遇到的问题:依据客户提供的服务器信息(ip、端口、访问方式、url后缀),配置相关的ad,启用缓存,这里都是正常的虚拟服务配置。
配置信息有:oa:10.1.0.197,端口是80、9080, ad提供的单臂ip是:10.1.18.10。
分析:经过抓包分析,输入http://10.1.18.10的时候,客户端去服务器进行http请求的时候,服务器会直接返回一个js的文件,该文件里面的执行代码会强制客户端跳转到指定的页面上去,如http://10.1.0.197:9080/portal/Login/enter.jsp。
处理思路:
处理方法:
1. 让客户取消js自动跳转,结果客户端只有在输入完整的url的情况下才能打开页面,这个方法能够测试此项目的最终需求(缓存),但是不方便,尝试给客户做http头部改写,经过测试,客户的OA登录页面太多因素,改写后存在访问异常。这个方法短期内无法较好的解决问题,不采用。 2. 不取消自动跳转,保持服务器原有所有配置,修改服务器返回的js文件,讲AD的IP替换掉原系统的IP,然后由AD给客户返回修改后的js文件,客户端执行js后,跳转后的地址就是AD的IP了,操作步骤如下:
A、通过后台抓包或者httpwatch,获取到服务器返回js的http实体,实体内容如下,
B、在AD的公共对象—》自定义内容,新建一个自定义,把以上内容copy到内容区中
HTTP头部的原始数据为: HTTP/1.1 200 OK Date: Tue, 23 Apr 2013 03:59:22 GMT Server: IBM_HTTP_Server Last-Modified: Fri, 30 Sep 2011 01:57:46 GMT ETag: "85b5-34a-f3a283f1" Accept-Ranges: bytes Content-Length: 842 Keep-Alive: timeout=10, max=100 Connection: Keep-Alive Content-Type: text/html <script>........</script>
按如下方式修改 : HTTP/1.0 200 OK
Date: Tue, 23 Apr 2013 03:59:22 GMT
Server: IBM_HTTP_Server
Last-Modified: Fri, 30 Sep 2011 01:57:46 GMT
Accept-Ranges: bytes
Content-Type: text/html <script>........</script>
说明:http版本从1.1改为1.0(建议修改为1,0,1.0默认支持短连接),将http涉及到的存活时间全部去掉,将http实体具体参数去掉。
到这一步还需要对该http实体进行最重要的修改,就是修改js里面的跳转参数,通过查找,定位为:newUrl="http://10.1.0.197:9080/portal/stPortal/default.jsp";将这个newUrl跳转的url ip修改为ad的ip即: newUrl="http://10.1.18.10:9080/portal/stPortal/default.jsp";
C、新增一个基于目标虚拟服务的前置策略,如下说明:由于这个js是在访问/的时候服务器才会返回,根据实际情况,配置匹配ad修改http实体的条件(这里配置了GET /以及host是10.1.18.10即ad)。最后在相关的虚拟服务将这个策略进行关联。配置完成
处理结果:通过http实体改写,实现了预期。 |