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

文章详细分析并解决了一个B/S架构的WEB项目在跨运营商网络环境下,用户登录模块出现的问题。主要从秘钥管理、浏览器缓存及网络原因入手,通过URL请求变化规避缓存机制,最终成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目上遇到一个很纠结的问题,公司测试好好的东西到客户现场就出这样那样的问题。

一、      问题描述

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

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

二、      问题分析

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

三、      问题解决

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

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

不会取缓存:http://ip:port/server/login?r=一个随机数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值