У пользователей в личном кабинете в моих заказах отображается большое количество заказов на одной странице, из-за этого все очень сильно тормозит. Предлагаю сделать постраничный или с подгрузкой вывод заказов. Это очень поможет для клиентов, с большим количество заказов!
6 комментариев
Тормозит не из-за этого. Наблюдаемый эффект - следствие, но не причина. Надо искать глубже. Хотя может быть имеется ввиду действительно какое-то запредельно огромное число заказов. О каком числе заказов идет речь, когда упоминается "большое количество"?
Постраничное решение показано тут https://support.webasyst.ru/fo... , но оно только сегментирует вывод длинного списка для удобства чтения. Проблему "торможения" оно не решит, если она лежит в другой плоскости.
Больше 400 заказов
А у вас заказы в список идут вместе с товарами или в сокращенном виде типа: "дата, номер, сумма, статус, вид доставки, вид оплаты"?
В свое время для магазина, где у клиентов много заказов (50-100+), переписал немного my.orders.html, чтобы оставить там только первичную информацию и не тащить внутренность заказа в список.
Попробуйте в шаблоне отсечь лишнее на этой стадии, чтобы не делать запрос в таблицу order_items, а смотреть только orders. Код содержимого там примерно такой (его можно просто закомментировать на время теста)
И сравните результат до и после.
Теперь не тормозит, но товар искать не удобно))
Если вам товары в списке заказов нужны в ЛК, чтобы их искать, то постраничный вывод вообще убьет всю идею в том виде, как это можно сделать сейчас. Я бы посоветовал подумать в направлении полноценного поиска товаров в ЛК, а не сегментации списка заказов, хотя это тоже хорошо, но тогда, когда уже есть поиск по товарам или тогда, когда в нём нет потребности вовсе.
В свое время изучал этот вопрос, но в таблице order_items мне не хватило contact_id для быстрой сцепки всех товаров заказчика без оглядки на заказы и сложных запросов для исполнения мечты. Пришлось в нескольких местах дополнить и модифицировать код исходников, чтобы иметь такую связку. Но всем подряд не рекомендовал бы повторять "трюк".
Если делать по уму, то список заказов должен быть кратким, а подгрузка состава заказа должна происходить по запросу в список уже потом, чтобы не исполнять толстые запросы на старте, либо поиск по товарам, но оптимально иметь связь не только по номеру заказа, но и по id заказчика, тогда такой поиск будет работать очень шустро и формирование списка товаров в ЛК улучшится. Появятся возможности кастомизации этого момента (поиск товаров, фильтр товаров, статистика по заказанным товарам).
Но, повторюсь, все это справедливо для большого и очень большого числа заказов. При малом кол-ве заказов (скажем 10-15 штук) такой проблемы можно не заметить даже сейчас.
Когда-то были планы по созданию продвинутого ЛК с поиском по товарам, но ушли на второй план.
В этом плане отличные ЛК у Ситилинка, Онлайнтрейда и т.п.
Вот заказы сокращенным списком с пагинацией по 20 штук на страницу.
Но рядом есть и поиск по товарам, которые заказывал.
Закоментил этот код: