您的位置:首页 > 理论基础 > 计算机网络

异网间缓存引发的问题分析及解决

2014-11-18 11:25 183 查看
最近项目上遇到一个很纠结的问题,公司测试好好的东西到客户现场就出这样那样的问题。

一、      问题描述

公司项目为一个B/S架构的WEB项目,在客户现场用浏览器登录后再次登录就报用户名密码错误,而在公司测试始终不会出现这个问题。

用户登录模块实现逻辑说明:用户登录密码是做了RSA加密处理后进行传输的,在进入登录页面前需要到后台获取加密秘钥,然后用获取到的秘钥对密码进行加密处理后传到后台进行密码验证,验证通过则允许登录,验证不过则提示错误。

二、      问题分析

程序都是一套,不同的只是客户环境和公司环境的差别。首先考虑的原因可能是秘钥过期了,刷新页面重新获取秘钥即可,这一招在公司网络中完全有用,在客户现场就失效了。第二种原因可能是浏览器缓存造成,清理浏览器缓存重新刷新页面,公司可以刷新到最新的页面,但是在客户现场却刷新不到最新的页面,以为浏览器坏了,换个浏览器发现还是刷新不到最新的页面。在浏览器里面直接下载一个服务器上修改过的js文件,发现下载的也是服务器上修改前的版本,说明不是用户电脑或浏览器问题,应该是网络原因了。发现客户现场使用的是联通的宽带,我们服务器是部署在电信机房,网上搜索了一下,不同运营商间网络接入是要进行结算的,而且结算费用很高,特别是联通接入电信的网,结算费用存在很大逆差,我想,为了减少接入电信的次数减少接入产生的流量,联通构建了一套自己的异网访问缓存机制,只要URL不变,就直接取自己缓存服务器上的内容,而不去电信的网络中获取文件了。如果合理利用这种缓存机制,也可以提高应用服务效率,如果运用不好就会出现我遇到的问题。



三、      问题解决

一般浏览器缓存都是通过URL来作为KEY标识缓存是否存在的,试了一下,联通缓存服务器也是这么干的,要规避它这种缓存其实也很简单,只要每次发起的URL请求不一样就可以了,例如请求加个随机数参数。

会取到缓存:http://ip:port/server/login

不会取缓存:http://ip:port/server/login?r=一个随机数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息