Bixby是否在服务器上缓存请求?

时间:2019-06-25 12:29:55

标签: bixby

在我的应用程序中,来自Bixby的所有语音都被重定向到一个进行api调用的操作。此api调用将响应发送给Bixby,以说明用户的话语。最近,我观察到,如果用户说以下内容:-

用户说:- 将xyz添加到我的购物车
api响应:- 您要选择其中两个吗?
用户说:-
api响应:- 您要结帐吗?
用户说:-

理想情况下,现在请求应该到达我的api,并且应该向用户显示结帐结果页面,但是Bixby会显示用户缓存的响应并再次显示以下响应:-

api响应:- 您要结帐吗?

,循环无限期地继续。我想知道是否会发生这种情况?有没有一种方法可以跳过缓存并将请求发送到api端点进行响应?

2 个答案:

答案 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-cacheCache-Controlno-cache) 。发生这种情况时,这就是Bixby所做的:

  1. no-storecacheTime:Bixby将不缓存任何内容。这将覆盖客户端提供的max-age变量。
  2. 响应时间+ cacheTime <当前时间:从缓存中删除响应(即使客户端请求更长的cacheTime
  3. 响应时间+ max-age <当前时间:从缓存中删除响应(即使响应提供了更长的void initState(){ super.initState(); currentUser = new User(); currentUser.getCurrentUser().then((_)=> setState((){ currentUser.getInfo().then((_) => setState(() { if(currentUser.getUid()!=null) { uid = currentUser.getUid(); } })); } ));}