在我的应用程序中,来自Bixby的所有语音都被重定向到一个进行api调用的操作。此api调用将响应发送给Bixby,以说明用户的话语。最近,我观察到,如果用户说以下内容:-
用户说:- 将xyz添加到我的购物车
api响应:- 您要选择其中两个吗?
用户说:- 是
api响应:- 您要结帐吗?
用户说:- 是
理想情况下,现在请求应该到达我的api,并且应该向用户显示结帐结果页面,但是Bixby会显示用户缓存的响应并再次显示以下响应:-
api响应:- 您要结帐吗?
,循环无限期地继续。我想知道是否会发生这种情况?有没有一种方法可以跳过缓存并将请求发送到api端点进行响应?
答案 0 :(得分:1)
是的,请求被缓存在服务器上。您可以根据需要禁用缓存。
例如
let options = {
cacheTime: 0
};
let response = http.getUrl('https://my-capsule.com/api/search/', options);
有关更多选项,请参见https://bixbydevelopers.com/dev/docs/reference/JavaScriptAPI/http#http-options。无双关语。 :)
答案 1 :(得分:0)
除了客户端提供的max-age
之外,服务器有时还可以在no-store
标头中提供其他指令(no-cache
和Cache-Control
或no-cache
) 。发生这种情况时,这就是Bixby所做的:
no-store
或cacheTime
:Bixby将不缓存任何内容。这将覆盖客户端提供的max-age
变量。cacheTime
<当前时间:从缓存中删除响应(即使客户端请求更长的cacheTime
)max-age
<当前时间:从缓存中删除响应(即使响应提供了更长的void initState(){
super.initState();
currentUser = new User();
currentUser.getCurrentUser().then((_)=> setState((){
currentUser.getInfo().then((_) => setState(() {
if(currentUser.getUid()!=null) {
uid = currentUser.getUid();
}
}));
}
));}
)