我使用Scout + Algolia在我的Laravel应用程序中搜索表格。我唯一的关键点是删除模型。我的理解是,当一个模型被删除时,scout将更新algolia,然后更新我的索引。一旦模型被删除,我会重定向回到我的搜索路线,但路线要求我硬刷新以查看我的搜索列表的任何更新。
有关问题的任何想法?
由于
答案 0 :(得分:3)
我认为问题是竞争条件,而不是缓存问题。
当您执行$model->delete()
时,将发送事件以更新Algolia,但Algolia的索引操作是异步的。因此,在删除实际发生之前可能会显示该页面。
索引操作是异步的,因为添加数据会触发繁重的计算并花费几秒钟。 此外,Algolia始终优先考虑搜索电话。这意味着如果您的应用程序发送了大量搜索查询,则更新将被延迟,直到服务器可以处理它。
Algolia返回此类操作的taskID,因此您可以使用它来查看是否执行了该操作。 Laravel默认不返回它,因此需要进行一些修改。