Должен ли я кэшировать выходные данные короткого кода в блоге WordPress?

Я переопределяю галерею WordPress по умолчанию:

add_filter( 'post_gallery', 'my_gallery_shortcode'), 12, 2 ); function my_gallery_shortcode($output, $attr) { // some modifications to output here return $output; } 

Изменения в $ output имеют среднюю сложность, не могут сказать, что они занимают слишком много или слишком малое время обработки.

Мой вопрос, должен ли я кэшировать $ output через переходные процессы? Если да, то каков наилучший способ получить ключ для set_transient?

Если вы считаете, что ваш короткий код повреждает производительность (измерьте, и вы узнаете!), Тогда вам может потребоваться кэширование его вывода в переходный период. Хорошим способом получить уникальный ключ будет рассмотрение того, что может отличать вызовы к вашей функции короткого кода:

  1. его имя
  2. пройденные атрибуты
  3. URL-адрес сайта (в случаях, когда действительны несколько URL-адресов сайтов, например, имя мобильного домена)

Вам также необходимо сохранить длину ключа короче – до 45 символов . То, что я нахожу, хорошо, это взять хеш MD5 для конкатенации этих элементов, что дает вам хороший короткий ключ, который вряд ли столкнется с другим ключом.

 $key = md5(__FUNCTION__ . serialize($attrs) . site_url()); 

Еще одна вещь, которую следует рассмотреть, – это истечение срока действия вашего переходного процесса. Если вы этого не сделаете, переходный процесс будет автоматически загружен со всеми другими параметрами автозагрузки (переходные процессы хранятся в таблице опций). Это увеличит использование памяти на каждой странице, что может повредить производительность вашего сайта (о, глажение). Если вы сохраняете много данных в своем переходном процессе, и это не нужно на каждой странице / почте, не загружайте его автоматически! (т. е. установить любое истечение срока действия)

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