Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Как работать с кэшем

Как работать с кэшем
, by

Добрый день создаю модуль и возникли проблемы с кэшем(с ним сталкиваюсь впервые).имееться $xml я его распарсил и все необходимое закинул в переменную $res.(или проще закинуть все в блок и кэшировать уже блок?)

Сейчас требуется закинуть его в кэш (обновлять это раз в 6 часов) и вытаскивать это при обращении.

Знаю что требуется искать в 

cache_get
cache_set
hook_cron

Но чего то не догоняю как закинуть.

Как я понял данный код закиывает в кэш, но куда столько переменных... куда вставить мою переменную?

cache_set($cid, $data, $bin = 'cache', $expire ='CACHE_PERMANENT')

Вытащить из кэша 

cache_get ($ CID, $ bin = "cache")

а для обновления как использовать hook_cron не представляю.

Подскажите мне насчет моей проблемы. Заранее спасибо.

1 answer
votes: 777
Answer

Я возможно ошибаюсь, но друпал кеширует все блоки по умолчанию, если не указано, что его кешировать не нужно в настройках блока. Посмотрите вот этот модуль block cache alter, возможно он вам поможет:

http://drupal.org/project/blockcache_alter

Насчет того, что можно и без модуля обойтись (это в описание к модулю написано):

...
$cache = cache_get('pref_pref_leader', 'cache_block');
// Return cache if possible.
if (!empty($cache) && isset($cache->data) && !empty($cache->data)) {
  return $cache->data;
}

// no cache, generate the output.
...
$content = ...;
$block = array(
  'subject' => 'Семерка лучших',
  'content' => $content,
);
// Cache for 30 mins.
cache_set('pref_pref_leader', $block 'cache_block', time() + 1800);
return $block;
...

Источник: http://drupal.stackexchange.com/questions/6090/drupal-7-block-caching