Bixby 是否在服务器上缓存请求?
Does Bixby cache the requests on server?
在我的应用程序中,来自 Bixby 的所有话语都被重定向到一个进行 api 调用的操作。此 api 调用 returns 对用户话语的 Bixby 响应。最近我观察到如果用户说以下内容:-
用户说:- 将 xyz 添加到我的购物车
api 回复:- 你想要其中的 2 个吗?
用户说:- 是
api 回复:- 你想结账吗?
用户说:- 是
理想情况下,现在请求应该到达我的 api 并且应该向用户显示结帐结果页面,但是 Bixby 显示用户缓存的响应并再次显示以下响应:-
api 回复:- 你想结账吗?
并且循环无限期地继续下去。我想知道这种行为是否符合预期?有没有一种方法可以跳过缓存并将请求发送到 api 端点进行响应?
是的,请求缓存在服务器上。如果需要,您可以禁用缓存。
例如,
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。没有双关语的意思。 :)
除了客户端提供的cacheTime
,服务端有时可以在Cache-Control
header。发生这种情况时,Bixby 会执行以下操作:
no-cache
或 no-store
:Bixby 不会缓存任何内容。这将覆盖客户端提供的 cacheTime
变量。
- 响应时间 +
max-age
< 当前时间:从缓存中删除响应(即使客户端请求更长 cacheTime
)
- 响应时间 +
cacheTime
< 当前时间:从缓存中删除响应(即使响应提供的时间更长 max-age
)
在我的应用程序中,来自 Bixby 的所有话语都被重定向到一个进行 api 调用的操作。此 api 调用 returns 对用户话语的 Bixby 响应。最近我观察到如果用户说以下内容:-
用户说:- 将 xyz 添加到我的购物车
api 回复:- 你想要其中的 2 个吗?
用户说:- 是
api 回复:- 你想结账吗?
用户说:- 是
理想情况下,现在请求应该到达我的 api 并且应该向用户显示结帐结果页面,但是 Bixby 显示用户缓存的响应并再次显示以下响应:-
api 回复:- 你想结账吗?
并且循环无限期地继续下去。我想知道这种行为是否符合预期?有没有一种方法可以跳过缓存并将请求发送到 api 端点进行响应?
是的,请求缓存在服务器上。如果需要,您可以禁用缓存。
例如,
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。没有双关语的意思。 :)
除了客户端提供的cacheTime
,服务端有时可以在Cache-Control
header。发生这种情况时,Bixby 会执行以下操作:
no-cache
或no-store
:Bixby 不会缓存任何内容。这将覆盖客户端提供的cacheTime
变量。- 响应时间 +
max-age
< 当前时间:从缓存中删除响应(即使客户端请求更长cacheTime
) - 响应时间 +
cacheTime
< 当前时间:从缓存中删除响应(即使响应提供的时间更长max-age
)