Рейтинг: 3.9726  
Внедрено
Предложил Пользователь 17890 06.10.2016 18:14:12

bitrix:catalog.element - убрать лишние данные из кеша

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

Нужно это поправить.    

1/ Массив $arResult['SECTION']  и подмассив $arResult["SECTION"]["PATH"]:
зачем сохранять в кеше все поля секций, даже SEARCHABLE_CONTENT?
для сео они все не нужны.

2/ Зачем сохранять все свойства элемента в кеш и даже пустые?
Массив $arResult['PROPERTIES'] - зачем все сохраняются? для сео и прочего лишь некоторые ведь нужны...
Надо лишние убирать.

После удаления лишнего из кеша, объем этого самого кеша уменьшается с 3мб до 90кб.
Считаю, что нужно внедрить это в компонент bitrix:catalog.element.

Пример решения через result_modifier.php компонента bitrix:catalog.element:
// clear unused cache fields
foreach ($arResult['PROPERTIES'] as $k => $prop) {
   if (trim($prop['VALUE']) == '') {
      unset($arResult['PROPERTIES'][$k]);
   }
}

$arDeleteSectionKeys = array('SEARCHABLE_CONTENT', '~SEARCHABLE_CONTENT');
foreach ($arResult['SECTION'] as $k => $s) {
   if ($k == 'PATH') {
      foreach ($s as $ks => $ss) {
         foreach ($ss as $kss => $ss2) {
            if (in_array($kss, $arDeleteSectionKeys)) {
               unset($arResult['SECTION'][$k][$ks][$kss]);
            }
         }
      }
   } else if (in_array($k, $arDeleteSectionKeys)) {
      unset($arResult['SECTION'][$k]);
   }
} 
Рейтинг: 0.0185  
Ответил Жуков Евгений 25.10.2016 15:08:47
iblock 16.6.1. изменения затронут так же news.detail.
п.1 Оставили только часть полей
п.2. Ключ PROPERTIES больше не сохраняется вообще - в нем больше нет необходимости