我是网络开发的新手,我正在从w3Schools学习AJAX。在学习GET请求时,它表示以下内容可能会为您提供缓存结果:
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();
要避免这种情况,请在网址中添加唯一ID:
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();
缓存结果意味着什么?我浏览了整个示例,但无法理解,我何时应该使用第二种方法中给出的唯一ID?
答案 0 :(得分:4)
浏览器可以通过 Uniqe URL 缓存Http响应,因此下次您访问某个站点时,浏览器不会发送http请求,但会显示该URL的最后一个响应缓存存储。
当您使用随机因素创建网址时(在这种情况下,存在具有随机值的查询字符串变量名t
),这会阻止浏览器缓存响应。
第一个案例的浏览器缓存网址:
demo_get.asp
demo_get.asp 来自缓存
第二个案例的浏览器缓存网址:
demo_get.asp R = 42350972
demo_get.asp?r = 11850753 没有缓存
答案 1 :(得分:3)
在发出HTTP GET请求之后,浏览器可以选择保留它收到的响应,并且下次需要发出相同的请求时,而不是发出请求,获取之前收到的响应并将其呈现。这称为caching。
由于URL通常是浏览器识别要检索哪个缓存页面的键,因此打破此问题的一种方法是始终使用不同的URL请求相同的资源。这样,浏览器将存储对每个URL的响应,但不太可能再次检索存储的页面,因为新URL与上次用于存储响应的URL不同。
控制缓存的另一种方法是使用HTTP协议内置的caching capabilities。