ГлавнаяБлогБитрикс и большой кэш по ID

Битрикс и большой кэш по ID

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
10 июля 2010 г.
1 мин чтения

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

Решение — генерировать иерархическую структуру подпапок на основе хэша ID:

function __getGenerationCachePath($id)
{
    $hash = md5($id);
    $path = substr($hash,-4,2).'/'.substr($hash,-2);
    return $path;
}

Пример использования с CPHPCache:

$ob_Cache = new CPHPCache;
$i_CacheTime = 3600;
$s_CacheID = $ID;
$s_CachePatch = "/object_80k/" . __getGenerationCachePath($ID) . "/" . $ID . "/";

Функция создаёт структуру подпапок вида /object_80k/as/df/ID, разбивая 80 тысяч папок на иерархические подпапки. Это уменьшает время поиска кэша и общую нагрузку на сервер.