android安卓2.3.x浏览器ajax缓存机制

android安卓2.3.x浏览器ajax缓存机制

    在如今web ajax操作频繁的时代里面,我们难免会遇到许多问题,今天要探讨的是ajax的缓存机制。最近在做一个mobile的web站点,涉及到许多的ajax操作,在做一个登录状态的判断时,我在高版本浏览器和UC上测试时发现了ajax在安卓2.x的系统上纯在严重的缓存,导致了我的登录判断出现了bug,必须要手动通过设置手机上的缓存清除掉缓存后才能获取正确的ajax数据。


后面我找到了两种通过前端JS可以解决方案:


1、第一种是在ajax请求url增加一个随机数可以解决解决问题。

xmlHttp.open("GET", "ajax.asp?now=" + new Date().getTime(), true);


2、第二种是将我们ajax的请求类型从"get"换成"post",这样子的请求就不会存在缓存,但是这种方法其实并不是最好的方法,因为我们知道get的是获取数据时使用的类型,post是提交表单时使用的ajax类型,可能很多人觉得用哪个都无所谓,其实那么想就错了,获取数据get的请求要比post更快。

xmlHttp.open("POST", "ajax.asp", true);


getpost的差异我在这里不做过多介绍,但是google一下你就会找到许多写的非常好的文章。但是我最近的项目中,只有安卓2.x的系统自带浏览器会存在get请求出现严重的缓存问题,用UC或者用IOS都会出现这个问题,这难道就是浏览器本身的一个bug吗。


    我们都知道,ajax能提高页面载入的速度的主要原因是通过ajax减少了重复数据的载入,真正做到按需获取,既然如此,我们在写ajax程序的时候不妨送佛送到西,在客户端再做一次缓存,进一步提高数据载入速度。那就是在载入数据的同时将数据缓存在浏览器内存中,一旦数据被载入,只要页面未刷新,该数据就永远的缓存在内存中,当用户再次查看该数据时,则不需要从服务器上去获取数据,极大的降低了服务器的负载和提高了用户的体验,如果我们请求类型使用post,那基本每次请求都是不会去读取缓存的,所以获取数据还是建议使用get


转载请注明来自 520UED http://www.520ued.com/article/538835ecb992a7c43f5c2056

comments powered by Disqus