使用 django-haystack RealTimeSignalProcessor 优化显示结果
Optimize displaying results with django-haystack RealTimeSignalProcessor
我使用 Django
作为我的网络应用程序的后端,并使用 django-haystack(with Solr)
来搜索和显示结果。
我使用 RealTimeSignalProccessor
形式 django-haystack
,但我有一个问题:
- 我有一个 Auction model
和 expires-(DateTimeField)
。当我显示结果时,我正在做类似 e-bay 的事情(例如,过期时间:1h 23m 5s)。
问题是在显示所有拍卖的页面上,如果您想在每次访问此视图时更新 Expires in
参数(正如我在 django-haystack 文档中读到的那样),您将拥有使用 object.save()
方法更新 Solr 索引数据库。但是,如果我每次转到列出所有拍卖的那个视图时都这样做以获得 30 个结果,那么它会非常慢并且效率不高。
还有其他解决方案吗?你有什么建议?
无需不断更新数据库中的 expires_in
字段 - 在广告过期时保留 expires_at
字段,并计算模型中检索方法的剩余时间或者在你看来。
这样您就可以避免在流量增加时向数据库写入更多数据,并且如果到期日期发生变化,您也不会 运行 进入可能的竞争条件,如果人们正在查看页面在更新到期时间的同时。
我使用 Django
作为我的网络应用程序的后端,并使用 django-haystack(with Solr)
来搜索和显示结果。
我使用 RealTimeSignalProccessor
形式 django-haystack
,但我有一个问题:
- 我有一个 Auction model
和 expires-(DateTimeField)
。当我显示结果时,我正在做类似 e-bay 的事情(例如,过期时间:1h 23m 5s)。
问题是在显示所有拍卖的页面上,如果您想在每次访问此视图时更新 Expires in
参数(正如我在 django-haystack 文档中读到的那样),您将拥有使用 object.save()
方法更新 Solr 索引数据库。但是,如果我每次转到列出所有拍卖的那个视图时都这样做以获得 30 个结果,那么它会非常慢并且效率不高。
还有其他解决方案吗?你有什么建议?
无需不断更新数据库中的 expires_in
字段 - 在广告过期时保留 expires_at
字段,并计算模型中检索方法的剩余时间或者在你看来。
这样您就可以避免在流量增加时向数据库写入更多数据,并且如果到期日期发生变化,您也不会 运行 进入可能的竞争条件,如果人们正在查看页面在更新到期时间的同时。