Кеширование

#
Кеширование
Уважаемые разработчики планируется ли введение кеширования информации (хотя бы частичного) в младших версиях хосткмс - халява и малый бизнес, а то 50-70 запросов к БД на одну страницу не очень то хорошо
Модератор
#
Re: Кеширование
irbiss,
Изменения в комплектации редакций не планируется.
Количество запросов зависит от числа публикуемых на странице модулей и самих запросов. Не нужно бояться количества запросов, один большой запрос может выполняться дольше сотни простых. Что именно нехорошо Вы увидели в количестве запросов на страницу - Вы не указали. Проблем в работе младших редакций системы из-за количества запросов нами не зафиксировано.
В старших редакция с включенным модулем кэширования количество запросов на страницу в среднем составляет 4-6 запросов.
#
Кеширование
Проблем в работе младших редакций системы из-за количества запросов нами не зафиксировано.

Нет ли данных какую максимальную посещаемость выдержит сайт (порядка 700 страниц) на редакции хосткмс халява на обычном среднестатистическом хостинге ( на спейсвеб)
Модератор
#
Re: Кеширование
irbiss,
Таких данных не может быть по ряду причин. Будет на сайте 700 страниц или 100 - большой разницы нет с точки зрения базы.
Дальше идут вопросы самого виртуального хостинга, количества сайтов на одном сервере, конфигурации это сервера с точки зрения ПО и железа.
#
Re: Кеширование
Если вставляем в макет:
<?php
$Shop = new Shop();
$shop_id = 2;
$group_id = false;
$param['cache'] = 'true';
$count = $Shop->GetCountItemsWithConditions($shop_id, $group_id, $param); // Распечатаем результат
echo $count;
?>


То время загрузки страницы увеличивается примерно на 9сек. возникает ощущение что эти данные не кэшируются. Как лечить?
Модератор
#
Re: Кеширование
CCron,
Информация о параметре кэширования в API была передана случайно. Метод не кэширует свои результаты. Если Вы используете его в своей интеграции, можете создать новый кэш (пример указания атрибутов кэша дан в руководстве пользователя, к вечеру будет перенесено в руководство по интеграции) и кэшировать результаты в нем.
Пример работы с кэшем до вечера будет размещен в руководстве по интеграции.
#
Re: Кеширование
Если необходимо закешировать некое значение (число товаров в интернет магазине), что в нем не правильно:
<?php
$Cache = & singletion ('Cashe');

// Имя элемента, наиболее часто используется идефикатор или строка индентификаторов
$item name = 'shop_all_ad_counter_1_index';

$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->Indert($item_name, $value, $cache_name);
if ($result)
{
   echo  "Вставка выполнена успешно";
}
else
{
   echo "Ошибка вставки"
}
?>
Модератор
#
Re: Кеширование
CCron,
Посмотрите в API, есть пример:
http://www.hostcms.ru/api/HostCMS_5/Cache.html#methodInsert

У Вас как минимум ошибка в названии метода, на Indert(), а Insert(). Также в настройках кэша не забудьте создать собственно кэш с указанным у Вас именем SHOP_ALL_AD_COUNTER.
#
Re: Кеширование
В настройках кеша создали:
$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


В макет сайта вставили:
<?php
$Cache = & singletion ('Cashe');

// Имя элемента, наиболее часто используется идефикатор или строка индентификаторов
$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 = & singletion ('Cashe');

// Имя элемента, наиболее часто используется идефикатор или строка индефикаторов
$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 "Элемент в кэше не найден!";
}
?>


Ругается на строку
$item name = 'Счетчик всех объявлений';

В API некоторые нюансы не понятны.
Модератор
#
Re: Кеширование
CCron писал(а):
Ругается на строку

Посмотрите, $item name и $cache name должны писаться через подчеркивание, т.е. $item_name и $cache_name
Авторизация