我正在使用 Scout + Algolia 在我的 Laravel 应用程序中搜索表格。我唯一的症结是删除模型时。我的理解是,当删除模型时,侦察员将更新 algolia,然后依次更新我的索引。删除模型后,我将重定向回包含我的搜索的路线,但该路线需要我硬刷新才能查看对我的搜索列表的任何更新。
有什么想法可能是什么问题?
谢谢
我正在使用 Scout + Algolia 在我的 Laravel 应用程序中搜索表格。我唯一的症结是删除模型时。我的理解是,当删除模型时,侦察员将更新 algolia,然后依次更新我的索引。删除模型后,我将重定向回包含我的搜索的路线,但该路线需要我硬刷新才能查看对我的搜索列表的任何更新。
有什么想法可能是什么问题?
谢谢
我认为问题是竞争条件,而不是缓存问题。
当您执行$model->delete()
此操作时,将分派事件以更新 Algolia,但 Algolia 的索引操作是异步的。所以页面可能在删除实际发生之前显示。
索引操作是异步的,因为添加数据会触发繁重的计算并需要几秒钟。另外,Algolia 总是优先考虑搜索调用。这意味着如果您的应用程序发送大量搜索查询,则更新将延迟到服务器可以处理为止。
Algolia 会为此类操作返回一个 taskID,因此您可以使用它来查看该操作是否已执行。Laravel 默认不返回它,因此需要进行一些修改。