上周帮朋友调试他的Bubble应用,差点被API缓存气到摔键盘。明明在OpenAI后台改了Prompt,前端返回的结果却纹丝不动,跟中了邪一样。折腾了两个小时才发现,罪魁祸首是Bubble那个藏得很深的默认缓存机制。
那个让我崩溃的下午
事情是这样的。朋友做的是一个智能简历分析工具,用户上传简历后,AI返回匹配度评分。他优化了评分标准,从五星制改成百分制,测试时却死活拿不到新结果。清空浏览器缓存、换无痕模式、甚至重启电脑——全没用。
后来在Bubble论坛翻到一个2019年的帖子,才恍然大悟:API Connector默认会给响应结果缓存15分钟。这意味着,如果你连续调用同一个API端点,Bubble会直接返回之前存好的结果,根本不走新的请求。
解决办法其实简单到让人想骂人:在请求参数里加一个时间戳变量。具体操作是在API Connector的Parameters里定义一个叫_t的参数,类型选Text,默认值填Current date/time:formatted as milliseconds。然后在URL或Body里引用它,比如https://api.example.com/data?_t=【_t】。每次请求的时间戳都不同,Bubble就认不出这是"同一个"请求,缓存自然失效。
失败处理比成功更重要
另一个让我吃尽苦头的坑,是API调用失败时的表现。Bubble的工作流一旦遇到API返回非200状态码,或者响应超时,默认行为是直接报错,整个流程卡死在那里。用户看到的只是一个转圈圈的按钮,永远等不到结果。
我现在的做法是给每个API调用步骤后面紧跟一个条件分支。在Workflow里,点击API步骤下方的"Add a condition",判断条件是"This API call's error is not empty"。如果出错,立即把工单状态改成"failed",同时往日志表里写一条记录,包括错误码和时间戳。这样至少能知道问题出在哪一步,而不是对着空白页面干瞪眼。
超时设置的隐藏菜单
Bubble的API Connector有个很隐蔽的选项:超时时间默认只有30秒。对于OpenAI这种偶尔抽风的API,30秒真不够用。修改路径是进入API Connector设置,点开具体某个API调用,在"Advanced"标签页里把Timeout拉到60秒甚至120秒。这个设置藏得深,很多人根本不知道存在。
日志是你最好的朋友
我现在每个涉及API的工作流都会强制插入日志步骤。不是Bubble自带的那个Server Log——那个查看太麻烦——而是自己建一个Data Type,字段包括request_body、response_body、status_code、duration_ms。出问题的时候直接查数据库,比翻Bubble后台的日志界面快十倍。
说白了,在无代码平台做开发,不能真的"无脑"拖拽。那些藏在界面深处的配置选项,往往决定了你的应用是玩具级还是生产级。缓存和失败处理,就是最容易被忽视、却又最致命的两个环节。

Bubble这个缓存坑真是防不胜防,之前也被坑过,加时间戳确实管用。