Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Создание кэша

00 голосов
5
У меня для индекса.пхп подгружается компонент.
Реально ли реализовать кэш для компонента?
Если да то буду немерно признателен примерному коду.
у меня следующий уомпонент:



//компонент
// Выбирает категории в инфоблоке
function ShowChildSection($iblock) {
$arFilter = Array('IBLOCK_ID'=>$iblock,'DEPTH_LEVEL'=>1);
$db_list = CIBlockSection::GetList(Array("SORT"=>"ASC"), $arFilter, true);
while($ar_result = $db_list->GetNext()) {
?>| <?=$ar_result['NAME']?> <?
}
}

$iblock = ChekIblockIdOnCode('notebook_chars');

$res = CIBlock::GetList(Array("SORT"=>"ASC"),Array('TYPE'=>'xml_catalog',"ACTIVE"=>"Y"), true);
$i=0;

# Массив соответствий фоток инфоблокам
$images['notebook_chars'] = '04.jpg';
$images['Printers_catalog'] = '20.jpg';
$images['MFU_Copirs'] = '60.jpg';
$images['Photo_video'] = '09.jpg';
$images['Computers_chars'] = '01.jpg';
$images['Monitors_chars'] = '03.jpg';
$images['Tele_video_game'] = '08.jpg';
$images['Scaners_chars'] = '10.jpg';
$images['Proectors_chars'] = '06.jpg';
$images['UPS_chars'] = '30.jpg';
$images['LAN'] = '80.jpg';
$images['Communicator_chars'] = '4363.jpg';
$images['Flash_usb'] = '9A.jpg';
$images['Account_materials'] = '65.jpg';

while($ar_res = $res->Fetch())
{
if($ar_res['CODE']!='NEW_GOODS' && $ar_res['CODE']!='Special_Offers') {
$iblock = $ar_res['ID'];
//print_a($ar_res);
if($i==0){
?>

[img]/new/[/img]" width="60" height="60" border="0" hspace="5" vspace="15"> <table width="100%" border="0" cellspacing="2" cellpadding="2"> <tr> <td> <h1><?=ChekCodeIblockOnId($iblock,5)?></h1> <?ShowChildSection($iblock);?>

</td>

<?
$i++;
}else {
?>
[img]/new/[/img]" width="60" height="60" border="0" hspace="5" vspace="15">

<td><h1><?=ChekCodeIblockOnId($iblock,5)?></h1> <?ShowChildSection($iblock);?>

</td>
</tr>
</table>
<?
$i=0;
}
}
}

if($i==1)
{
?>
 

<td><h1> </h1>  

</td>
</tr>
</table>
<?

}

foreach ($out as $key=>$value) {
echo $value;
}
?>
спросил 10 Май, 13 от Fierce88 (440 баллов)

5 Ответы

00 голосов
CPHPCache вам в помощь
ответил 10 Май, 13 от Almarea (3,760 баллов)
00 голосов
Это не компонент, код чтобы кэшировать


Код

<? $CACHE_TIME = 3600*24; // время, если 0 то не кэшируем
   $publicCache = new CPageCache;
   $CACHE_ID = SITE_ID."|".$USER->GetID()."|"; // ID кэша
   $DIR  = /index/ // папка относительно /bitrix/cache/
      if($publicCache->StartdataCache($CACHE_TIME, $CACHE_ID, $DIR)): ?>
      
      
      
      
      тут все что хотите закэшировать
      
      
      
      
      
      
      <? $publicCache->EndDataCache(); endif;  ?> 




ответил 11 Май, 13 от Lekar (2,220 баллов)
00 голосов
почему не компонет?
я засунул его в папку компонентов и в index.php подключаю его при помощи кода
Код
$APPLICATION->IncludeComponent(
    "07:index_of_site",
    //"index_of_site",
    Array(
        "SEF_MODE" => "N",
        "IBLOCK_TYPE_ID" => "xml_catalog",
        "ACTION_VARIABLE" => "action",
        "CACHE_TIME" => 1*24*60*60,
       // "BASKET_PAGE_TEMPLATE" => "/personal/basket.php",
    )
);

и все вроде работает как компонент
Прокоментируйте пожалуста свои слова
Цитата
Это не компонент
ответил 16 Июль, 13 от Fierce88 (440 баллов)
00 голосов
Цитата
омен пишет:
и все вроде работает как компонент Прокоментируйте пожалуста свои слова



то что вы написали выше и

Цитата
омен пишет:
$APPLICATION->IncludeComponent( "07:index_of_site", //"index_of_site", Array( "SEF_MODE" => "N", "IBLOCK_TYPE_ID" => "xml_catalog", "ACTION_VARIABLE" => "action", "CACHE_TIME" => 1*24*60*60,// "BASKET_PAGE_TEMPLATE" => "/personal/basket.php", ) );


довольно сильно отличается... во втором случае я согласен это компонент в первом нет, для компонент кэширование можете посмотреть в любом стандартном компоненте...
ответил 20 Окт, 13 от Lekar (2,220 баллов)
00 голосов
Цитата
омен пишет:
почему не компонет?

Компоненты 2.0 предполагают разделение логики и представления. Где шаблон вывода?
ответил 23 Янв, 14 от NitroGeN (2,840 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 20 Фев, 14 от Dryad (100 баллов)
0 голосов
1 ответ
спросил 20 Май, 13 от HolyRage (280 баллов)
+1 голос
2 ответов
+1 голос
2 ответов
0 голосов
0 ответов