猿问

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

我学习了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.asp
GET请求
一个简单的GET请求:
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();
亲自试一试
在上面的例子中,您可能得到的是缓存的结果。
为了避免这种情况,请向URL添加一个唯一的ID:
xmlhttp.open("GET","demo_get.asp?t="+Math.random(),true);
xmlhttp.send();
慕斯709654
浏览 485回答 2
2回答

繁花不似锦

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

温温酱

问号后面就是给请求加的一些数据啦。如果服务器没有处理这部分,就当不存在了。但是产生的URL中含有随机数,所以就是唯一的了。也就没有缓存。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答