Должен ли я кэшировать вывод шорткода галереи 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?

Author: Marvin3, 2012-12-10

1 answers

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

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

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

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

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

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

 2
Author: webaware, 2012-12-13 13:58:08