提问人:Yajant Bhawsar 提问时间:11/11/2023 更新时间:11/11/2023 访问量:40
调查通过 REST API 将产品添加到 Django Oscar 购物篮时性能缓慢
Investigating Slow Performance in Adding Products to Django Oscar Basket via REST API
问:
我目前在基于 Django Oscar 的电子商务应用程序中将产品添加到购物车时遇到性能问题。当篮子包含大约 50 件物品时,问题变得尤为明显。我正在使用 Django Oscar 的 REST API 将产品添加到购物篮中,这是由 JavaScript 调用的。挑战在于确定经济放缓的根本原因并探索可能的解决方案。
观察:
- 通过产品列表视图添加产品的速度很慢。
- 即使购物车中有大量商品,通过商品详情页面添加商品仍然很快。
详:
- 接口地址:http://localhost:8000/en/api/basket/add-product/
- 通过详情页面直接添加:http://localhost:8000/en/basket/add/12787/
- 报价计算:选件是一个重要的问题,因为在购物篮中添加一行会触发每行所有可用选件条件的计算。
到目前为止的调查:
中间件方法:对于通过详情页面直接添加,在重定向页面加载期间,在 Django Oscar 的 BasketMiddleware 中处理报价计算。与 API 中的自定义代码相比,此代码可能得到更好的优化。
API 中的报价计算:当篮子由 30+ 条具有不同产品的篮子线组成时,问题会加剧。在 API 调用期间,查询计数随购物篮行计数线性增加。
请求帮助:
我正在寻找优化 API 调用以使用与通过详细信息页面直接添加相似数量的查询的方法的建议/实际示例。虽然获得更多查询是意料之中且不可避免的,但如果有办法使 API 的查询计数与更优化的详细信息页面方法保持一致,它将显着提高性能。
Django-silk 报告:
从列表视图添加的 12 个篮子行:之后,我从详细信息视图添加了 3 个不同的产品:
感谢您的见解和建议。
答: 暂无答案
评论