169 похожих чатов

Всем привет! Вопрос по архитектуре проекта. Делаю интернет магазин, стэк angular

& php.

Так сложилось что вся бизнес логика зависит от одного запроса. Этот запрос - получение каталога.
Я достаю каталог и группирую их и создаю путь хлебных крошек.
Пример: главная -> смартфоны -> самсунг -> а20.

Если пользователь делает прямой переход сразу на страницу товара, мне нужно сформировать путь хлебных крошек и показать активную категорию в каталоге.

Получается так:
Я делаю запрос на получение всего каталога (800 обьектов, из за cloudfire занимает 1-2 сек, иногда 5 сек или 10 сек), затем я группирую их и создаю дерево с 3 мя уровнями вложенности. Пример: смартфоны и планшеты -> смартфоны -> apple, samsung...
Затем во время групптровки я нахожу нужную себе категорию, беру его id и делаю запрос на сервер на получения характеристик и тп.

По такой архитектуре если пользователь сразу переходить на странцу товара, он ждет пока загрузится каталог затем загрузиятся характеристики. Если каталог не загрузится то все хана).

Зависимость всего процесса от 1 запроса не очень, темболее если этот запрос порой занимает по 5-10 сек. Подскажите как решить данный вопрос?

Если предложете сохранить в localstorage, такое решение после получения каталога.

А мне нужно первый визит пользователя сразу и очень быстро получит каталог, чтобы другие запросы сразу отправились.

33 ответов

30 просмотров

Может сначала характеристики каталога грузить, а потом крошки? Можно же без построения всего понять целевой каталог? Точнее сначала грузить товар

То есть при открытии карточки товара в приложение сразу загружается ВЕСЬ каталог из 800 позиций?

Alikhan- Автор вопроса
Oleg Safonov
Может сначала характеристики каталога грузить, а п...

А забыл дописать. Если пользователь переходить сразу на страницу товара, то путь выглядит так domain.com/c/vse-smartphony/b-apple. Переход идет по keyword для seo. Фронтенд не знает какой id. Поэтому я получаю весь каталог, группирую их по ключевым слова и ищу по keyword. Я попросил бэкенд принимать keyword и по keyword доставать товар, но для бэка это будет слишком сложно, потому что фильтры продукта достаются по id, характеристики по id, хлебные крожки через рекурсию и еще есть такие моменты где нужно по id брать. И все переписать на keyword ну это не очень) легче фронту найти текущую категорию и отправить id но опять таки получение каталога занимает приличное время

Alikhan
А забыл дописать. Если пользователь переходить ср...

На бэке это всяко проще и быстрее, чем на клиенте. Тем более если для этого нужен весь каталог

Oleg Safonov
На бэке это всяко проще и быстрее, чем на клиенте....

+ Очень плохая реализация В будущем может стать ещё хуже, нужно переделывать, пока не дорого

Alikhan- Автор вопроса
Oleg Safonov
На бэке это всяко проще и быстрее, чем на клиенте....

Каталог меняется раз в пол года, я даже думаю на фронте захардкодить каталог как решение😂😂😂

Alikhan
Каталог меняется раз в пол года, я даже думаю на ф...

Ну дело Ваше. Решение так себе в общем случае. Можно закэшировать и пользоваться, но фоном обновлять, но когда выстрелит - неизвестно. Узнаете ли когда выстрелит - неизвестно

Alikhan- Автор вопроса
Oleg Safonov
На бэке это всяко проще и быстрее, чем на клиенте....

Видите, у нас сайт и моб апп и 1 бэк. Если переписать бэк может сломатся моб апп. Апишка для мобилы делалась, под веб не планируют переписать (скорее всего)

Alikhan
Видите, у нас сайт и моб апп и 1 бэк. Если перепис...

Ну так бэк же можно расширить, а не изменить) Open closed principle, наконец то пригодился)

Alikhan- Автор вопроса
Alikhan
Ну да, ну упрямые не хотят)

Прояви софт-скиллс, объясни руководителю, что дешевле и эффективнее будет дописать бэк, чем коствлить фронт

Alikhan
Ну да, ну упрямые не хотят)

Ну в целом это ненормальная х.ня. Команды должны одну цель преследовать. Если они 'не хотят' - это проблема

Alikhan- Автор вопроса
Кириллл 🚀 Go Aaply
Прояви софт-скиллс, объясни руководителю, что деше...

На бэке это все связано по id. фильтры, характеристики, фотки товара и хлебные крожки. Переписывание на keyword займет очень много времени, а сроки до конца месяца.

Alikhan
На бэке это все связано по id. фильтры, характери...

Это не займёт больше времени, чем на клиенте. Ну или по крайней мере судя по имеющейся информации, просто не хотят делать, не во времени дело

Alikhan
На бэке это все связано по id. фильтры, характери...

легче бек выучить и самому переписать, намного легче и дешевле чем костыль, ну и выгнать ленивцев можно и залутать их зп

Alikhan- Автор вопроса
Alikhan
Скорее всего не хотят делать

Короче Главное- получить апрув от тимлида или кого то ещё на решение и уведомить, что бэк отказался. Вот с этого начать стоит А то потом крайним окажетесь

Alikhan- Автор вопроса
Alikhan- Автор вопроса

Что за реакция😂😂😂

Alikhan
Что за реакция😂😂😂

Ну странно все это. Если тимлид, то странно выглядят проблемы с бэком и решения

Alikhan
Я тимлид на фронте

Кому как не тимлиду фронта договариваться с бэком? В любом случае нужно на бэке что то делать, хотя бы в след раз, если сейчас на клиенте реализовывать.

Alikhan
Я тимлид на фронте

а есть тимлид тимлидов?

Alikhan- Автор вопроса
Oleg Safonov
Кому как не тимлиду фронта договариваться с бэком?...

Нет, мы договорились с бэком сначала по keyword делать, они даже начали делать, но потом поняли что очень много связок по id и апи для мобилы ламалось, поэтому я ищу альтернативное решение чтобы им было легче работы

Alikhan- Автор вопроса
Evgheni Чернявский
а есть тимлид тимлидов?

Есть руководитель) Я на фронте, коллега на бэке, и есть руководитель проекта вот он все решает.

Alikhan
Нет, мы договорились с бэком сначала по keyword де...

Ну типа странно, нахер трогать существующее если нужно новое сделать. Делали для фронта - сломали мобилки

Alikhan
Новое апи?

Новые методы, вестимо. Или тесты должны быть, насколько они там радикально меняли то все?

Oleg Safonov
Ну типа странно, нахер трогать существующее если н...

сделали небось generic через generic вот и ломается если что-то сверху дописать

Alikhan- Автор вопроса
Evgheni Чернявский
сделали небось generic через generic вот и ломаетс...

Да я тоже так думаю. Апи прям так и знаывается mobapi😂

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта