Как закешировать блок, внутри которого код php?

Главные вкладки

Аватар пользователя semsem semsem 6 сентября 2018 в 9:53

Приветствую. Подскажите пожалуйста. Есть блок в котором выполняется код php. Как можно закешировать этот блок скажем на неделю? Чтоб этот код не выполнялся каждый раз при загрузке страницы.

Комментарии

Аватар пользователя semsem semsem 6 сентября 2018 в 14:44

itcrowd72 wrote:

Пробовали включить "кэширование блоков" в настройках кэширования друпала?


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

Аватар пользователя semsem semsem 6 сентября 2018 в 15:25

А как проверить работает ли кеширование? При смене данных - вижу что на странице выводятся свежие данные моментально, поэтому сомневаюсь работает ли это.

Аватар пользователя sas@drupal.org sas@drupal.org 7 сентября 2018 в 9:41
1

Есть еще извращение = сделать блок через views и включить кеш = тогда будет кешироваться не только для анонимов и там можно указать срок кеширования, даже можно там использовать Views PHP

Аватар пользователя bumble bumble 8 сентября 2018 в 15:27
<?php
function my_module_function() {
  
$my_data = &drupal_static(__FUNCTION__);
  if (!isset(
$my_data)) {
    if (
$cache cache_get('my_module_data')) {
      
$my_data $cache->data;
    }
    else {
      
// Do your expensive calculations here, and populate $my_data
      // with the correct stuff..
      
cache_set('my_module_data'$my_data'cache');
    }
  }
  return 
$my_data;
}
?>

by https://www.lullabot.com/articles/a-beginners-guide-to-caching-data-in-d...