Кеширование

#
Re: Кеширование
Всё, вроде бы, теперь нормально, только сайт сообщает:
Fatal error: Class 'Cashe' not found in /usr/home/8/modules/Kernel/Kernel.php on line 0
Модератор
#
Re: Кеширование
CCron,
а откуда Вы взяли такое имя класса? Он у нас не Cashe, а Cache, в API есть пример.
#
Re: Кеширование
Теперь всё исправили, но сайт при загрузки грузится не 0,2сек а 4,5 сек
выражение точно кешируется?

А настройках кеша:
$GLOBALS['CACHE_CONFIG']['SHOP_ALL_AD_COUNTER']['name'] = 'Счетчик всех объявлений';
$GLOBALS['CACHE_CONFIG']['SHOP_ALL_AD_COUNTER']['block'] = 100; // Максимальное число элементов в кэше
$GLOBALS['CACHE_CONFIG']['SHOP_ALL_AD_COUNTER']['block_size'] = 320000; // В байтах
$GLOBALS['CACHE_CONFIG']['SHOP_ALL_AD_COUNTER']['expires'] = 3600; // В секундах
$GLOBALS['CACHE_CONFIG']['SHOP_ALL_AD_COUNTER']['active'] = true; // true или false


Код в макете:
<?
$shop = new shop();
$shop->ShowShop(2, 'СписокОбъявленийНетПоискаУзкий', array('xml_show_group_type' => 'all'));
?>
<br />
<?php
$Cache = & singleton('Cache');

// Имя элемента, наиболее часто используется идефикатор или строка индентификаторов
$item_name = 'Счетчик всех объявлений';

$Shop = new Shop();
$shop_id = 2;
$group_id = false;
$param['cache'] = 'true';

$value = $Shop->GetCountItemsWithConditions($shop_id, $group_id, $param);

// Для кэширования различных элементов используются различные кэши. Список кэшей задается в настройках модуля "Кэширование"
$cache_name = "SHOP_ALL_AD_COUNTER";

$result = $Cache->Insert($item_name, $value, $cache_name);
if ($result)
{
   echo  "Всего на сайте объявлений:";
}
else
{
   echo "Ошибка вставки";
}
?>


<?php
$Cache = & singleton ('Cache');

// Имя элемента, наиболее часто используется идефикатор или строка индефикаторов
$item_name = 'Счетчик всех объявлений';

// Для кэширования различных элементов используются различные кэши. Список кэшей задается в настройках модуля "Кэширование"
$cache_name = "SHOP_ALL_AD_COUNTER";

if ($in_cache = $Cache->GetCacheContent($item_name, $cache_name))
{
   $value = $in_cache['value'];
   // В $value содержится закэшированный элемент
   echo $value;
}
else
{
   echo "Элемент в кэше не найден!";
}
?>
Модератор
#
Re: Кеширование
так я не вижу тот фрагмент кода, где проверяется есть значение в кэше или нет? у Вас оно явно всегда получается и пишется в кэш.
#
Re: Кеширование
Примерно ясно, тогда должно получиться примерно следующее?
<?php
$Cache = & singleton ('Cache');

// Имя элемента, наиболее часто используется идефикатор или строка индефикаторов
$item_name = 'Счетчик всех объявлений';

// Для кэширования различных элементов используются различные кэши. Список кэшей задается в настройках модуля "Кэширование"
$cache_name = "SHOP_ALL_AD_COUNTER";

if ($in_cache = $Cache->GetCacheContent($item_name, $cache_name))
{
   $value = $in_cache['value'];
   // В $value содержится закэшированный элемент
   echo "Всего на сайте объявлений: $value";
}
else
{
   $Shop = new Shop();
   $shop_id = 2;
   $group_id = false;
   $param['cache'] = 'true';
   $value = $Shop->GetCountItemsWithConditions($shop_id, $group_id, $param);
   $result = $Cache->Insert($item_name, $value, $cache_name);
      if ($result)
      {
         echo  "Всего на сайте объявлений:";
      }
      else
      {
         echo "Ошибка вставки";
      }
}
?>

Скажите что не правильно, и как сделать это чтобы всё работало.
Модератор
#
Re: Кеширование
CCron,
На первый взгляд все нормально. Нужно вставить отладочные сообщения "Пишем в кэш", "читаем из кэша" и посмотреть, как работает код.
#
Re: Кеширование
Как убрать кэширование в Личном кабинете, т.к. в списке Мои объявления, после его удаления юзером, оно всё равно отображается (до очистки кэша).
Модератор
#
Re: Кеширование
CCron,
в метод показа магазина передать флаг, запрещающий кэширование.
$param['cache'] = false;
Авторизация