2017-09-05 109 views
0

我正在使用Scout + Algolia在我的Laravel应用程序中搜索表格。我唯一的缺点是删除模型。我的理解是,当一个模型被删除时,侦察员将更新algolia,然后更新我的索引。一旦模型被删除,我将重定向回到我的搜索路线,但路线要求我进行硬刷新以查看我的搜索列表的任何更新。Laravel 5.4,Scout&Algolia模型更新缓慢

对这个问题可能有什么想法?

感谢

回答

3

我认为这个问题是一个竞争条件,而不是一个缓存的问题。

当你做$model->delete()事件将派遣更新Algolia,但Algolia的索引操作是异步的。因此,该页面可能在实际发生删除之前显示。

索引操作是异步的,因为添加数据会触发大量计算并花费几秒钟。 另外,Algolia始终优先搜索电话。这意味着如果您的应用程序发送大量搜索查询,则更新将延迟到服务器可以处理它。

Algolia返回此类操作的taskID,以便您可以使用它查看操作是否已执行。 Laravel默认不会返回它,所以需要进行一些修改。

+1

感谢@JulienBourdeau。我认为最好的方法是订阅模型事件,然后渲染视图。希望当Algolia收录索引时,这个事件将会发生。 – jjkilpatrick