缓存一定要正确使用
前言
缓存在项目上特别常见,但是一定要正确使用,否则不但不省事,还会制造一堆的麻烦,下面记录下我在Android上一次问题
详细
很久之前接手的一个Android项目,每次每个接口请求都需要上传本机的mac地址,可能是之前的开发者觉得每次都是现获取mac地址会比较费时,所以首次获取到后缓存到了sp文件里,之后每次都是从sp文件中读取!
之前的mac地址获取的是wifi的mac地址,但是现场用的是网线,一开始并没有太关注这个事情,因为mac地址也只是用来后台校验是否存在这台设备,但是因为客户是银行方,所以任何接入网络的设备都要报备mac地址,一开始我也没有在意,因为我想mac地址就只有这一个吧,所以把wifi的这个地址报上去了,但是一直无法连接网络,那边运维的人查出来这个mac地址和报备的并不一样!
后来我才知道用的是网口,所以是另一个mac地址,需要获取eh0的mac地址,但是之前获取wifi的mac地址的方式已经安装到现场了,后面虽然更新了获取mac地址的方式,但是因为更新程序的时候并没有卸载,直接安装的,所以导致之前的mac地址一直被缓存在机器上,用的也一直是错误的mac地址!
后来过了N久,程序要更新,但是这次被卸载了更新的,所以导致mac地址变了真实的,还好还在测试中,并没有直接使用,否则又是一件严重的事故
后记
所以缓存一定要谨慎使用,像上面的问题解决方案也很多,比如更新版本后,做个版本缓存的检测,发现更新后,看看哪些数据需要清空重新获取,其实像上面的获取mac地址并不需要缓存,这个也不是耗时操作,还是直接获取的妥当