Услуги О модуле Проекты Компания Демо Документация Скачать FAQ Заметки
BEXX: Интернет-магазин

Новости

Опубликовано обновление модуля до версии 1.1.5
Необходимы интересные шаблоны для интеграции в модуль. С вас шаблон, с меня бесплатная интеграция.

Все новости

Заметки

Как известно, лень двигатель прогресса. Когда каждый день появляется сотня-...
Технология управляемого кеша в 1С-Битрикс хороша, но практическое применени...
Примерно год назад в 1С-Битрикс в тогда еще новой версии 9.1 появился функц...

Все заметки

Обратите внимание:

Brand & business

Результаты использования управляемого кеширования


Результаты использования управляемого кеширования

Технология управляемого кеша в 1С-Битрикс хороша, но практическое применение ее показало плачевный результат. Неделя использования на проекте housage.com с посещаемостью 600 человек и 3500 хитов в сутки показала несостоятельность полного применения управляемого кеша для интернет-проекта с частым обновлением информации и большим объемом данных.

В попытке снизить нагрузку на сервер было применено управляемое кеширование везде, где только было можно. К примеру, на список объектов недвижимости вешались теги - по одному тегу на каждый объект. В итоге страница с 10 объектами имела 10 тегов. Также с каждым блоком с объектами. Каждая страница объекта имела по одному тегу. За неделю использования тегов накопилось 300 000. И все они находятся в таблице b_cache_tag.

Но технология управляемого кеша в 1С-Битрикс подразумевает обращение к этой таблице, да еще и выборку ВСЕХ записей из таблицы:

Код

   function InitDBCache()
   {
      if(!$this->DBCacheTags)
      {
         global $DB;

         $this->DBCacheTags = array();
         $rs = $DB->Query("
            SELECT *
            FROM b_cache_tag
            WHERE SITE_ID = '".$DB->ForSQL(SITE_ID, 2)."'
            AND CACHE_SALT = '".$DB->ForSQL($this->SALT, 4)."'
         ");
         while($ar = $rs->Fetch())
         {
            $path = $ar["RELATIVE_PATH"];
            $this->DBCacheTags[$path][$ar["TAG"]] = true;
         }
      }

   }


Чем грозит выборка 300 тысяч записей и их распихивание в массив, я думаю, и так понятно. Резкий рост нагрузки на сервер базы данных, при этом куда больший, чем было до применения управляемого кеша. В итоге оптимизация кеширования имела обратный эффект.

Но это не значит, что использовать управляемый кеш нельзя. Вероятнее всего, необходимо его использовать умеренно и на ограниченном типе данных. Например, на housage.com его логично будет использовать только для страниц объектов недвижимости, их всего 9000, при этом установить время кеширования на неделю, например. А для страниц со списками объектов можно использовать стандартное кеширование на сутки. В итоге таблица b_cache_tag будет иметь не сотни тысяч записей, а десяток тысяч записей. И выборка всех записей будет занимать не по 0.5 секунды, а обычные десятитысячные доли секунды.