Транзитный кэш

Урок 11

Зарегистрируйтесь или войдите и получите бесплатный доступ к первым 2-м урокам курса.

Урок 11

Транзитный кэш

В этом уроке рассмотрим важный механизм кэширования в WordPress – транзитный кэш. Как и в случае с любым кэшем, вы можете использовать транзиты для того, что хранить какие-либо данные, для получения которых требуется либо большое количество времени, либо ресурсов. Благодаря транзитам у вас есть возможность значительно ускорить получение этих данных. Также преимуществом является то, что транзитный кэш очищает сам себя в течение времени.

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

Чтобы скачать плагин, который получился в процессе этого урока, нужно купить курс.

Транзиты и интеграции с API

Очень классно транзиты вписываются в ситуации, когда нужно работать со сторонними API. Получение данных при помощи HTTP-запросов со стороннего сервера практически всегда занимает какое-то дополнительное время, транзитный кэш же позволяет сохранить ответ от стороннего API в базу данных (но не всегда в неё, при помощи плагинов можно ускорить транзиты и не хранить их в базе данных) и обращаться к нему супер-быстро. Кроме того, некоторые API ставят вам ограничение на количество запросов, что тоже получается обойти при помощи транзитного кэша.

Пример: у вас на сайте есть кастомный виджет погоды, который получает данные например с яндекс погоды при помощи API. Количество просмотров страниц вашего сайта допустим 5000 в сутки. В итоге ваш сайт сделает 5000 запросов к API погоды за сутки! Однако мы можем установить транзитный кэш на период времени например час, и тогда количество запросов к API будет…. 24! (так как в сутках 24 часа). Чувствуете разницу? Конечно, если вам нужно предоставлять более точные данные, то вы можете изменить время действия кэша до 30 минут или 15 минут, но даже тогда это будет всего 96 запросов вместо 5000.

Функции для работы с транзитами

Получение значений транзитов

Добавление транзитов

Удаление транзитов

Пример работы с транзитным кэшем

/**
 * Получаем подписчиков с какого-то стороннего сервиса
 */
function true_get_subscribers() {
 
	// это ключ-идентификатор значения транзитного кэша
	$transient_key = 'true_subscribers';
 
	// сразу же обращаемся к транзитному кэшу и пытаемся получить значение из кэша
	$transient = get_transient( $transient_key );
 
	// Если значение в транзитном кэша существует, то мы возвращаем его и на этом всё
	if( false !== $transient ) {
 
		return $transient;
 
	// В кэше пусто? Тогда обращаемся к API
	} else {
 
		// Обращаемся к API
		$response = wp_remote_get( 
			'https://api.example.com/v4/subscribers'
			array(
				'headers' => array(
					'token' => 'example_token',
				),
			)
		);
 
		// Сохраняем ответ из API в транзитный кэш
		set_transient( $transient_key, $response, DAY_IN_SECONDS );
 
		// Возвращаем результат
		return $response;
 
	}
 
}

Несколько моментов по коду:

  • На строчках 20-28 супер-упрощённый вариант HTTP-запроса. Безусловно, перед тем, как сохранять разультат ответа в кэш, нужно проверить код ответа и то, что вообще в теле ответа, подробнее этот момент рассматриваем на видео.
  • Я использовал константу DAY_IN_SECONDS – это значит, что значение в кэше просуществует ровно 24 часа перед следующим обновлением. Полный список констрант времени – ниже.

Константы времени

КонстантаЗначение
MINUTE_IN_SECONDS60 (1 минута)
HOUR_IN_SECONDS3600, 60 * MINUTE_IN_SECONDS
DAY_IN_SECONDS86400 24 * HOUR_IN_SECONDS
WEEK_IN_SECONDS604800 7 * DAY_IN_SECONDS
MONTH_IN_SECONDS2592000 30 * DAY_IN_SECONDS
YEAR_IN_SECONDS31104000 365 * DAY_IN_SECONDS
Купить курс
  • 11 видеоуроков
  • Можно скачать готовый код после каждого урока
  • Можно начать проходить курс сразу же после оплаты
  • Единоразовый платёж
  • Доступ навсегда
  • Уроки актуальны в 2024-м году
7000 р

Нажав на кнопку, вы соглашаетесь c условиями предоставления услуг и с обработкой персональных данных.