1

我是 Web 开发的新手,我正在从w3Schools学习 AJAX 。在学习 GET 请求时,它说以下内容可能会给您一个缓存的结果:

xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();

为避免这种情况,请在 URL 中添加一个唯一 ID:

xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();

缓存结果是什么意思。?我浏览了整个示例,但无法理解,我什么时候应该使用第二种方法中给出的唯一 ID?

4

2 回答 2

4

浏览器可以通过其唯一 URL缓存 Http 响应,因此在您下次访问站点时,浏览器不会发送 http 请求,而是显示其缓存存储中该 URL 的最后响应。

当您使用随机因子创建 URL 时(在这种情况下,有一个t带有随机值的查询字符串变量名称),这会阻止浏览器缓存响应。

第一种情况的浏览器缓存的 URL:

demo_get.asp

demo_get.asp从缓存

第二种情况的浏览器缓存的 URL:

demo_get.asp?r=42350972

demo_get.asp?r=11850753无缓存

于 2013-09-28T17:33:04.010 回答
3

在发出 HTTP GET 请求后,浏览器可能会选择保留它收到的响应,并且下次它需要发出相同的请求时,而不是发出请求,而是获取它之前收到的响应并显示它。这称为缓存

由于 URL 通常是浏览器识别要检索哪个缓存页面的键,因此打破这种情况的一种方法是始终使用不同的 URL 请求相同的资源。这样,浏览器将存储对每个 URL 的响应,但不太可能再次检索存储的页面,因为新 URL 与上次用于存储响应的 URL 不同。

另一种控制缓存的方法是使用内置于 HTTP 协议的缓存功能。

于 2013-09-28T17:15:51.380 回答