Руководство для новичков по кэшированию данных в Drupal 7
Опубликовано: 05.10.2017
Создавать сложный динамический контент в 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() вернет пустоту, но любые изменения в этой переменной будут сохранены для следующего вызова этой функции. Таким образом мы можем проверить была ли уже установлена переменная и получить ее немедленно не выполняя при этом никакой дополнительной работы.
Сегодня | Завтра | ||
USD | 32.62 | 32.50 | |
EUR | 39.90 | 39.92 |
Обменник | Переходов |
Wmchanger | 6 |
E-Market | 5 |
WMtoCash.com | 4 |
Str-Money | 3 |
Hot-Change | 3 |
Вы можете получить WMR-бонус в размере 0,01-0,10 WMR на свой кошелек 1 раз в сутки | |
Кошелек
|
|
Код
|
|
Обмен Webmoney |