AJAX请求的响应可以被浏览器缓存,以便下一次请求时可以更快地获取数据。缓存可以通过在请求中添加特殊的头信息来控制。以下是几个例子:
**1. 强制禁用缓存**
可以通过在请求的URL中添加一个随机参数来强制禁用缓存,例如:
```javascript
$.ajax({
url: 'example.com/data?_=' + new Date().getTime(),
// ...
});
```
这将在每个请求中添加一个新的时间戳参数,使得浏览器不会缓存响应。
**2. 设置过期时间**
可以在响应头中设置过期时间,告诉浏览器何时需要重新获取数据。例如:
```javascript
$.ajax({
url: 'example.com/data',
headers: {
'Cache-Control': 'max-age=3600'
},
// ...
});
```
这将告诉浏览器缓存响应时间为1小时,之后需要重新获取数据。
**3. 使用版本号**
可以在URL中添加版本号参数,当数据发生变化时更新版本号即可。例如:
```javascript
$.ajax({
url: 'example.com/data?v=2',
// ...
});
```
当数据发生变化时,将版本号从2更新为3,浏览器会重新获取数据。
4. 条件请求
可以使用条件请求来检查数据是否已经过期。例如:
```javascript
$.ajax({
url: 'example.com/data',
headers: {
'If-Modified-Since': lastModified
},
success: function(data, textStatus, xhr) {
if (xhr.status === 304) {
// 数据未发生变化,使用缓存
} else {
// 数据已更新,使用新数据
}
}
});
```
这将检查上次获取数据的时间戳是否与服务器上的时间戳相同,如果相同则表示数据未发生变化,可以使用缓存。如果时间戳不同,则需要重新获取数据。