На копии открыли сетку из тридцати позиций. Список товаров раздела (в Битриксе его собирает catalog.section) задал базе почти триста вопросов: для каждой пары отдельно бейдж, цена, склад, картинка бренда. Покупатель видит крутилку на восемь секунд и думает, каталога нет. Хостер в «нагрузке аккаунта» этого цикла не видит: для него это просто занятый процессор.
Память на сервере и восьмёрка PHP здесь слабее, чем один общий запрос вместо тридцати мелких. Пока цикл жив, новый тариф покупает те же триста вопросов.
Проблема
Не только файл карточки в сетке. Часто «удобный» файл после выборки, хвост компонента, метка «хит», остаток склада по одному номеру, цена опта «потом». Признак один: один и тот же вопрос с меняющимся номером товара. Это список на вынос: собрали все номера страницы — спросили один раз — разложили по карточкам.
- Свойства, которые рисуете, просят в выборке списка, не по одному.
- Остатки и цены — штатными полями каталога или одним запросом на все номера.
- Рост числа позиций на странице не должен линейно умножать вопросы к базе.
- Список акций — тот же вынос, не копия старого цикла в другом файле.
Причина
Решение
Сохранённая копия списка прячет боль на повторном заходе. Первый человек после сброса — снова триста вопросов. Фильтр и третья страница не должны звать старый цикл в соседнем файле. Опт не считают вторым кругом «потом»: если без второго круга цена врёт — чинят выборку, не возвращают обход по одной паре.
Отладку вопросов к базе оставляют только на копии. На бою её не забывают: иначе гость снова оплачивает стенд.
Тридцать позиций, две роли. Цифры верные, второго круга нет. Отдельный «оптовый» обход тоже выносят. Пока число вопросов растёт вместе с числом карточек, быструю память не обсуждают: это проверка шаблона, не тарифа.
Собирают номера с страницы. Один запрос свойств. Раскладывают по карточкам. Цену опта не считают вторым кругом «потом». Если без второго круга опт врёт — ключ выборки неполный, чинят выборку. Список акций и список хитов — тот же приём, не соседний файл со старым обходом.
Пока число вопросов растёт вместе с числом карточек, быструю память не обсуждают. Это проверка шаблона. Хостер в тарифе цикла не видит. Его видит человек на третьей странице, который уже выбрал фасон и не дождался сетки.
Отладку вопросов к базе на бою после замера выключают. Иначе гость снова оплачивает стенд, а вы думаете, что вынесли цикл. Тридцать карточек с слабым ростом вопросов — критерий. Линейный рост — цикл жив, тариф не тема.
- Сохранённая копия списка прячет боль на повторном заходе.
- Первый человек после сброса — снова триста вопросов.
- Фильтр и третья страница не должны звать старый цикл в соседнем файле.
- Опт не считают вторым кругом «потом»: если без второго круга цена врёт — чинят выборку, не возвращают обход по одной паре.
Проверка
До и после: вопросы на десяти, тридцати и шестидесяти позициях. Рост слабый, не «каждая пара — десять вопросов». Повторный заход без пачки одинаковых фраз. Не ставьте быструю память вместо выноса. Не увеличивайте число процессов сервера из‑за цикла. Не копируйте «удобный» файл с другого сайта без счётчика. Хостер цикл не увидит. Его увидит покупатель на третьей странице.
Чек-лист
- Сохранённая копия списка прячет боль на повторном заходе.
- Первый человек после сброса — снова триста вопросов.
- Фильтр и третья страница не должны звать старый цикл в соседнем файле.
- Опт не считают вторым кругом «потом»: если без второго круга цена врёт — чинят выборку, не возвращают обход по одной паре.
Назад в раздел
