我正在重写一个使用Filemaker数据库的应用程序。从历史上看,PHP脚本具有与Filemaker的PHP SDK连接。我将其转换为使用Filemaker 17 API。
在开发过程中,我正在创建一条新记录,然后显示记录列表。创建新记录后,旧系统(使用PHP SDK)将立即显示更新后的列表。我正在开发的新系统不会。
几分钟后,新系统(使用Filemaker 17 API)将显示正确的列表。似乎需要5到10分钟。
所有这些都是通过使用门户网站来实现的。
我正在使用Symfony PHP框架。我曾尝试清除Symfony缓存。
我还尝试过将UNIX时间戳附加到API调用的_find URL。它仍然会返回一个列表,但这是一个陈旧的列表。
我也在使用'cache-control: no-cache'
cURL选项。
我已经搜索了FM 17 API文档,但找不到任何相关内容。
是否有FM API实现的缓存?如果是这样,您如何禁用它?
我希望该列表可以通过FM 17 API立即更新。
如果我手动更新包含门户数据的记录,则从API返回的列表将立即生效。门户数据是否已缓存?
答案 0 :(得分:1)
要确保有新鲜数据,您可以关闭API会话并开始新的会话。
完成访问托管数据库的代码后,请使用HTTP 具有会话URL的DELETE方法指定托管的名称 数据库和会话的访问令牌。如果您的代码没有 注销数据库会话,访问令牌在以下情况下无效 FileMaker Data API会话在最后一次会话后15分钟超时 调用指定令牌的电话。
或者作为发现的一部分,您可以在script.pre-request中运行脚本,作为_find的一部分,它将刷新布局上的门户。例如。使用“刷新门户”脚本步骤。您看到的“缓存”行为可能只是该Data API会话的布局未更新,并且该布局需要更新。
您可以通过包含以下内容来运行FileMaker脚本作为查找请求的一部分: 脚本中的script.prerequest,script.presort和script参数 请求正文。
https://fmhelp.filemaker.com/docs/17/en/dataapi/index.html#perform-a-find-request
您也可以使用“人员密钥”直接在“事件”表上进行查找。
最后要注意的是,如果某个地方有某种未提交的记录,或者是未完成提交的API脚本调用,或者其他原因,则数据可能尚未显示在门户中。
(注释答案已用新信息编辑)