上周做智能文档出现了一个问题,就是下载下来的智能文档在客户端打开是,所关联的dll一直是老dll,并不是最新发布到IIS上dll。纠结了三天,终于在今天找到了是代理服务器的问题。刚开始出现这个问题的时候,思考过程如下:
①客户端IE缓存。
清除缓存,无效。
②更换机器。
无效。
③考虑是服务器端问题
在服务器端通过IIS打开该dll,正常显示。但是客户端下载还是老问题。
④还发现,过一天后,dll第一次下载就正常了。但是第二次甚至是第二次之后,还是错误。
⑤请教胖哥,沈大神。通过HttpWahcher检测,未觉察异常。
⑥在沈的介绍下,使用process monitor检查,发现异常:
第一次下载的时候,连接的IP是服务器地址。第二次和第二次以后下载的时候,连接的是代理服务器的地址。
⑦恰巧冯辉在加班,问问冯辉代理服务器的作用,发现问题了:代理服务器会把下载下来的文件先缓存起来,保存一段时间(这个和代理服务器的设置的过期时间有关),然后其他使用了此代理服务器的机器访问该网站并下载该文件,下载的路径将不是原来的服务器,而是直接从代理服务器上直接下载。
这样就解释了为什么清楚客户端缓存无效,因为缓存是在代理服务器上;换机器无效,因为其他机器会直接访问代理服务器上的缓存文件下载;第二天正常,代理服务器上文件过期了;HttpWatch检测无效,因为HttpWatch是在IE之上的软件,不会跟踪到IE内部机制;使用process monitor就行了,process monitor很底层,会正确显示IE下载文件在本地保存的机制。
最终解决办法:在客户端的IE连接设置中,设置10.*的IP不通过代理服务器即可。
再次感谢胖哥,沈大神,冯头。