Должен ли я кэшировать вывод шорткода галереи 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 имеют среднюю сложность, не могу сказать, что они занимают слишком много или слишком мало времени обработки.
Мой вопрос, должен ли я кэшировать вывод $ с помощью переходных процессов? Если да, то как лучше всего получить ключ для set_transient?
1 answers
Если вы считаете, что ваш шорткод снижает производительность (измерьте, и вы узнаете!), То вы можете рассмотреть возможность кэширования его вывода в переходный период. Хорошим способом получить уникальный ключ было бы рассмотреть, что может дифференцировать вызовы вашей функции шорткода:
- его название
- переданные атрибуты
- URL-адрес сайта (в случаях, когда допустимы несколько URL-адресов сайта, например, имя мобильного домена)
Вам также необходимо сократить длину ключа -- менее 45 символов . Что я нахожу хорошим, так это взять хэш MD5 для объединения этих элементов, что дает вам хороший короткий ключ, который вряд ли столкнется с другим ключом.
$key = md5(__FUNCTION__ . serialize($attrs) . site_url());
Еще одна вещь, которую следует учитывать, - это установка срока действия для вашего переходного периода. Если вы этого не сделаете, переходный процесс будет автоматически загружен со всеми другими параметрами автоматической загрузки (переходные процессы хранятся в таблице параметров). Это увеличит использование памяти на каждой странице, что, возможно, снизит производительность вашего сайт (о, глажка). Если вы храните много данных в своем временном файле, и они не нужны на каждой странице/публикации, не загружайте их автоматически! (т.Е. Не устанавливайте срок действия)
Конечно, вы должны учитывать, что все это может быть проще/эффективнее использовать плагин кэширования , который будет кэшировать гораздо больше, чем просто то, что генерирует ваша функция. Взвесьте свои варианты.