http://wm-monitoring.ru/

Руководство для новичков по кэшированию данных в Drupal 7

Опубликовано: 05.10.2017

видео Руководство для новичков по кэшированию данных в Drupal 7

Как улучшить свой код в 2016? — uWebDesign подкаст #65

Создавать сложный динамический контент в Drupal - это легко, но всему есть цена. Многие вещи, делающие сайт привлекательным, могут создать "кошмар производительности". Они грузят базу данных сложными запросами и тяжелыми вычислениями каждый раз когда пользователь загружает страницу нашего сайта.


Автоматическое создание спрайта в sass с помощью gulp.

Одно из решений этой проблемы - включить кэширование страниц в разделе администратора "Производительность". Это ускорит загрузку посредством кэширования каждой страницы и сильно сократит количество запросов к базе данных для анонимных посетителей сайта. Однако, это не сработает для авторизированных посетителей, потому что кэширование всей страницы допустимо только для анонимных пользователей, которые получают одинаковую копию одной и той-же страницы сайта.


Настройка WEBO Site SpeedUp: объединение CSS- и JavaScript-файлов

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

Основы

Первое правило оптимизации и кэширования: "Никогда не делайте что-то затратное дважды если вы можете сохранить результат и использовать его повторно". Рассмотрим небольшой пример этого правила в действии:

function my_module_function ( ) { $my_data = & drupal_static ( __FUNCTION__ ) ; if ( ! isset ( $my_data ) ) { // Здесь делаем сложные вычисления и записываем результат в переменную $my_data // остальные действия с результатом.. } return $my_data ; }

Самая важная вещь, на которую нужно обратить внимание в этом примере, это переменная $my_data. Первым делом мы пытаемся инициализировать ее вызовом функции drupal_static(). Функция drupal_static() появилась только в Drupal 7, она предоставляет функциям "временное хранилище" для данных, которые должны быть доступны даже после выполнения функции. При первом вызове drupal_static() вернет пустоту, но любые изменения в этой переменной будут сохранены для следующего вызова этой функции. Таким образом мы можем проверить была ли уже установлена переменная и получить ее немедленно не выполняя при этом никакой дополнительной работы.

Карта
rss