Перейти к содержанию

v7.7.4 обновление от 29-Апр-2026


ab.support.serhii

Рекомендуемые сообщения

  • Администраторы
Post #16276 Опубликовано

Дорогие друзья, сегодня мы выпустили релиз обновления:

SEO страницы для фильтров v7.7.4 от 29-Апр-2026

Исправления ошибок:
[!] Для генерации SEO-страниц для фильтров по правилам исправлена маркировка обновляемых SEO-страниц.

Обновления доступны всем пользователям с активной подпиской, производятся через Центр обновлений CS-Cart.


Хотите, мы оповестим Вас о следующем обновлении? Подпишитесь на наши каналы для анонсов:
Telegram
WhatsApp
YouTube

  • 1 месяц спустя...
Post #16490 Опубликовано

Дорогие разработчики.

Не пытаюсь вас заспамить. Лишь пробую ускорить Карт. В меру своих познаний.

Все эти предложения тестировались Клавдией на девкопии сайта по нескольку раз и с кучей допзапросов.

Поэтому надеюсь, что ее выводы таки верны.

Прошу вас перепроверить и внедрить.

Спасибо.

 

Файл: app/addons/ab__seo_filters/Tygh/ABSF.php — _get_hash_combos_condition (стр. 178)

Почему это проблема: при генерации SEO-фильтр страницы запрос SELECT IFNULL(field_type,0) FROM ?:product_filters WHERE filter_id=?i выполняется в цикле без кеша. На реальной странице мы намерили 116 повторов для одного filter_id=35, 69 — для filter_id=26, суммарно ~185 одинаковых запросов. Тип фильтра не меняется — 184 из 185 обращений лишние. Это классический N+1: каждый запрос дешёвый, но сотни round-trip к БД на каждом хите SEO-страницы складываются в заметную нагрузку (а SEO-страниц у магазина тысячи).

 

Решение — статический кеш в рамках запроса:

 

 

 

static $field_type_cache=[];
if (!isset($field_type_cache[$filter_id])) {
    $field_type_cache[$filter_id]=db_get_field('SELECT IFNULL(field_type,0) FROM ?:product_filters WHERE filter_id=?i',$filter_id);
}
if ($field_type_cache[$filter_id]) {

 

 

+ ~185 запросов → 1 на уникальный filter_id. Всего SQL-запросов на SEO-странице: 660 → 475 (вдвое меньше обращений к БД).

 

 

  • Like 1
  • OK 1
  • 1 месяц спустя...
Post #16752 Опубликовано (изменено)

А вот это вообще хорошая штука.

Да это кешируется, но только когда кто-то первый раз зашел в ту категорию. А когда в магазине обновляются цены, товары, то этот кеш постоянно сбрасывается.

 

Добавте плиз в коробку тоже.

---

 

 

Ещё одно место с лишними запросами в SEO-фильтрах — генерация SEO-имён фильтров.

В дополнение к тому, что я писал выше про кэш field_type — при построении SEO-ссылок фильтров на странице категории функция получения SEO-имени (внутри fn_ab__seo_filters_url_post → get_name) делает отдельный запрос к БД на КАЖДЫЙ вариант фильтра. На «холодной» категории с большим числом фильтров это выливается в сотни запросов — у нас доходило до ~1200 на одну категорию, и все они читают из одной и той же таблицы SEO-имён.

Предложение: один раз за запрос выбрать ВСЕ одно-фичевые SEO-имена категории одним bulk-запросом и держать их в памяти (одна запись в Registry / static-массив вида feature_value → {sf_id, name, features_hash}). Тогда:

  • одно-фичевые имена берутся из карты в памяти; отсутствие в карте = имени нет — без дополнительных запросов;
  • мульти-фичевые хэши остаются на штатной ветке get_name.

Эффект у нас: холодная категория — с ~1200 запросов до единиц, время генерации SEO-ссылок заметно падает. Вместе с фиксом кэша field_type (сообщение выше) это две независимые точки, где на одной странице категории набегают сотни повторных запросов.

 

На холодной категории (но прогретом сайте) суммарно ~1674 → ~584 SQL-запроса (≈в 3 раза меньше). Отдельно: field_type-кэш 660→475, bulk-прекэш SEO-имён — с ~1200 запросов до единиц. Основной эффект — кратное снижение нагрузки на БД на генерации SEO-страниц фильтров. 

 

По времени генерации на 20-25% примерно.

Изменено пользователем AndreyJ
  • Writing Hand 1

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...