为了账号安全,请及时绑定邮箱和手机立即绑定

请教一个关于ajax清除缓存的问题?

请教一个关于ajax清除缓存的问题?

慕斯709654 2019-04-13 08:36:12
我学习了w3school的ajax教程,有个地方卡住了。XMLHttpRequest对象的open()方法接受3个参数,即method、url、async。其中url代表:文件在服务器上的位置。那么,给这个url加上一个,Math.random(),url这个参数不就成了:demo_get.asp?t=0.1234567890123456这为何能正常运行呢?(目前我文件位置的认识是flie/xxx.txt这样的。)w3的链接:http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.aspGET请求一个简单的GET请求:xmlhttp.open("GET","demo_get.asp",true);xmlhttp.send();亲自试一试在上面的例子中,您可能得到的是缓存的结果。为了避免这种情况,请向URL添加一个唯一的ID:xmlhttp.open("GET","demo_get.asp?t="+Math.random(),true);xmlhttp.send();
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

例如你的文件URL是:flie/xxx.txt
第一次Ajax请求这个文件,浏览器可能会将这个文件缓存在本地,下次再打开这个文件浏览器就可以直接打开本地文件,无需重新通过网络再次获取。
但是,浏览器有可能会好心办了坏事,因为你修改了服务器的flie/xxx.txt文件,但是浏览器不知道,它还是会打开本地缓存的文件,这就会造成一些BUG。
为了防止出现这种问题,在URL上加一个参数“t=随机数”,浏览数会认为两次打开的是不同的东西,第二次Ajax就不会使用第一次Ajax的缓存。
至于“这为何能正常运行呢”?
在URL上加上参数,同样还是打开这个文件,当然可以正常运行。
flie/xxx.txt?t=0.1234567890123456,这个URL同样还是打开文件flie/xxx.txt。
                            
查看完整回答
反对 回复 2019-04-13
?
温温酱

TA贡献1752条经验 获得超4个赞

问号后面就是给请求加的一些数据啦。如果服务器没有处理这部分,就当不存在了。但是产生的URL中含有随机数,所以就是唯一的了。也就没有缓存。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 484 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信