Автор Тема: Ускорить работу blocklayered за счёт memcached  (Прочитано 70 раз)

11 Май 2021, 14:01:10
  • Старожил
  • ****
  • Сообщений: 488
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
День добрый,

Есть идея снизить нагрузку на сервер используя memcached для модуля blocklayered.

Что-то вроде такого, перед выполнением тяжёлого запроса (https://prestafaq.ru/103/%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D0%B5%D1%82-%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C-%D0%BA%D1%8D%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B2-prestashop):
$cacheKey = CacheProvider::getKeyName(__METHOD__);
        $data = CacheProvider::getInstance(false, CacheProvider::SYSTEM_MEMCACHED)->get($cacheKey);
        if (false === $data) {
            $data = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'customer` LIMIT 2', true, false);
            CacheProvider::getInstance(false, CacheProvider::SYSTEM_MEMCACHED)->set($cacheKey, $data, 60 * 60 * 24);
        }
        return $data;

Вопрос:
Как для каждой комбинации фильтров в модуле blocklayered получить свой уникальный $cacheKey.
Чтобы затем ему присвоить результат запроса.

public function getProductByFiltersздесь выполняется сам запрос.

Возможно сталкивались?