问题原因是APIM缓存仅按完全匹配来区分请求,因此使用相同的vary-by-query-parameters无法启用缓存。解决方法是在请求URL上添加一个唯一的参数,例如时间戳或随机字符串,以便每个请求具有独特的URL。这样,即使参数相同,APIM也可以缓存每个请求,并正确地使用vary-by-query-parameters来区分它们。
以下是一个示例函数,它将在URL上添加一个带时间戳的唯一参数,以便每个请求具有独特的URL:
function addUniqueParamToUrl(url) {
var timestamp = Date.now();
if(url.indexOf('?') !== -1) {
url += '&unique=' + timestamp;
} else {
url += '?unique=' + timestamp;
}
return url;
}
在API调用中,将调用此函数并使用返回的URL访问服务:
var serviceUrl = 'https://example.com/service';
var uniqueUrl = addUniqueParamToUrl(serviceUrl);
fetch(uniqueUrl).then(response => {
// process the response
});