XMLHttpRequest请求的缓存问题的处理方案

由于浏览器的缓存机制,当我们使用XMLHttpRequest发出请求的时候,浏览器会将请求的地址与缓存中的地址进行比较,如果存在相同记录则根据不向服务器发出请求而直接返回与上一次请求相同内容。其实不光是在Ajax应用中,在我们项目开发中使用一个基本的JavaScript更换验证码时,也会发生发出请求之后,并没有得到服务器端更新的结果的问题。以上皆是缓存问题,解决这类缓存问题并不麻烦,而且方法很多。

1.时间戳方法 ——即在每次请求的url后面加上当前时间的字符串或其他类似的不会重复的随机字符串,这样浏览器每次发出的是不同的url,即会当做不同的请求来处理,而不会从缓存中读取。

    if(url.indexOf("?")>=0){//判断url中是否已经带有参数
                    url = url + "&t=" + (new Date()).valueOf();
                }else{
                    url = url + "?t=" + (new Date()).valueOf();
                }

2、在HTTP header上处理缓存

    <meta http-equiv="pragma" content="no-cache" /> 
    <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" /> 
    <meta http-equiv="expires" content="Thu, 01 Jan 1970 00:00:01 GMT" /> 
    <meta http-equiv="expires" content="0" />

3. 在XMLHttpRequest发送请求之前加上:

    XMLHttpRequest.setRequestHeader("If-Modified-Since","0"); 
    XMLHttpRequest.send(null);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值