Кастомные поля и кеширование
-
Создано два кастомных типа контента —
product
иrecomend
.
Первый имеет три десятка кастомных полей + пяток таксономий.
Во втором сделано кастомное поле с выбором постов из первого. Нечто вроде «похожих записей», коих будет выбираться до сотни для одной записи типаrecomend
. https://i.imgur.com/WLkLrxn.jpg
И соответственно выводится в виде карточек с кастомными полямиproduct
а. (но не всё три десятка, а около десятка)Как мне кажется это должно создавать большую нагрузку на базу и память.
Подскажите, надо ли и как правильно делать кеширование для таких случаев? Имею ввиду не использование плагинов, а программно, на уровне ВП. Что почитать, в какую сторону смотреть? Желательно на русском.
Подозреваю, что надо использовать Redis или Memcached, но и в этом случае вопросы те же.Читал про объектное и транзитные кеширования в ВП, но мои знания об этом поверхностны и не знаю какое нужно для данного случая.
Или я ошибаюсь и ВП уже такое сам кеширует и от этого нагрузка не будет существенной?
-
Подскажите, надо ли и как правильно делать кеширование для таких случаев? Имею ввиду не использование плагинов, а программно, на уровне ВП.
На уровне ВП используются плагины. У стандартного ВП никакого кэширования нет.
надо использовать Redis или Memcached,
Никакого отношения к ВП не имеет. Это уровень сервера.
У стандартного ВП никакого кэширования нет.
То, что Вы об этом не знаете — не значит что этого нет.
Никакого отношения к ВП не имеет. Это уровень сервера.
php, mysql, gd и прочее тоже «уровень сервера». И ВП со всем этим работает.
Пожалуйста, не «помогайте» мне никогда.
Создано два кастомных типа контента
Чем создано?
Плагин или самописно?Чем создано?
Плагин или самописно?Кастомные типы — самописно.
Кастомные поля с https://wordpress.org/plugins/meta-box/ и его генератором https://metabox.io/online-generator/То, что Вы об этом не знаете — не значит что этого нет.
Ну так просветите — вы же знаете
php, mysql, gd и прочее тоже «уровень сервера». И ВП со всем этим работает.
Ровно в той же степени, как с этим работает Джумла, да и простой html.
Повторю еще раз: не путайте теплое с мягким — к ВП это никакого отношения не имеет.Ну так просветите — вы же знаете
https://wpmag.ru/2013/keshirovaniye-wordpress/ и ещё несколько постов там же.
Повторю еще раз: не путайте теплое с мягким — к ВП это никакого отношения не имеет.
Повторю еще раз: лично Вы, пожалуйста, не «помогайте» мне никогда.
и ещё несколько постов там же.
В самом ядре WordPress кэширование страниц не реализовано, но есть все необходимые функции для реализации этого на уровне плагинов.
Я так понимаю вы либо это все не читали, либо у вас проблемы с пониманиемПовторю еще раз: лично Вы, пожалуйста, не «помогайте» мне никогда.
Я тут посовещался и общим собранием постановили: отклонить вашу просьбу.
господа, хватит кусаться.
———
meta-box использует кеш объектов:
inc/fields/user.php: wp_cache_set( 'last_changed', microtime(), 'users' ); inc/fields/user.php: wp_cache_set( $cache_key, $options, 'meta-box-user-field' ); inc/fields/post.php: wp_cache_set( $cache_key, $options, 'meta-box-post-field' );
inc/fields/user.php: $last_changed = wp_cache_get_last_changed( 'users' ); inc/fields/user.php: $options = wp_cache_get( $cache_key, 'meta-box-user-field' ); inc/fields/post.php: $last_changed = wp_cache_get_last_changed( 'posts' ); inc/fields/post.php: $options = wp_cache_get( $cache_key, 'meta-box-post-field' );
см (для оптимизации своего самописного кода, если нужно):
Функции объектного кеша будут работать всегда
в худшем случае они будут использовать таблицу wp_options в SQL
хотя конечно по возможности лучше установить redis или memcached
Требуется (для редис):
1. Запущенное на сервере ПО redis-server
2. Расширение PHP (pecl) redis
3. Плагин https://ru.wordpress.org/plugins/redis-cache/аналогично для memcached.
Я так понимаю вы либо это все не читали, либо у вас проблемы с пониманием
Конечно же у меня, господин читатель 🙂
В ядре существует три основных вида кэширования — кэширование страниц, кэширование объектов и транзитное кэширование.
Судя по всему Вы не только не отличаете виды кеширования, но даже ни про директиву конфига
WP_CACHE
не знаете, ни про функцииwp_cache_*
. Учите матчасть, внимательный читатель. 🙂Yui, спасибо. Про наличие функций знаю, а вот как ими пользоваться скорее нет, чем да. Не приходилось пока ещё.
https://wpmag.ru/2015/transient-cache-wordpress/
тут достаточно приличные примеры кодани про директиву конфига WP_CACHE не знаете, ни про функции wp_cache_*.
Зачем мне это знать, когда про это знают плагинописатели?
Я не любитель велосипедостроительства с костылями на квадратных колесах и не являюсь членом секты «бесплагинофф»ну почему же, по мелочи всегда можно написать какой-нибудь код и закешировать, если логика использования данных это позволяет.
$top_posts = get_transient( 'trans_evo_topposts' ); if (!$top_posts) { $top_posts = stats_get_csv( 'postviews', array( 'days' => 6, 'limit' => 30 ) ); set_transient( 'trans_evo_topposts', $top_posts, 7200); /* attempt to cache a transient for 2 hours */ }
PS: Иногда можно кешировать не только полученное значение, но и кусок HTML-кода (через ob_start() и ob_end_flush())
Например для связанных записей.вот например stats_get_csv делает запрос к статистике Jetpack получая 30 самых просматриваемых записей за 6 дней,
делать это постоянно — глупость, поэтому получаем (если нет в кеше) и кешируем на 7200 секунд.-
Ответ изменён 5 лет, 1 месяц назад пользователем
Yui.
Зачем мне это знать,
Как минимум для того, чтобы не тратить чужое время на споры и чтение ереси типа
У стандартного ВП никакого кэширования нет.
Никакого отношения к ВП не имеет.
и т.п.
Я не любитель велосипедостроительства
Вы просто любитель. Любитель в ВП, любитель поспорить. Хотя нет. В бесполезных спорах и Вы профессионал. Суперпрофи.
Лучше бы тратили свою неуёмную энергию и кучу свободного времени на изучение ВП или другую полезную деятельность.тут достаточно приличные примеры кода
Yui спасибо, направление раскопок понял. Будем считать топик решенным.
но и кусок HTML-кода (через ob_start() и ob_end_flush())
Например для связанных записей.Упсс… Вот про это как раз интересно.
Я как раз и думал, что хорошо бы кешировать часть страницы — сам контент + блоки «похожих». Или хотя бы только весть блок с блоками. Чтобы не дёргать каждый раз базу.
Но не знаю как это считается — «объект» или что иное. И соответственно не знаю как это реализовывать. -
Ответ изменён 5 лет, 1 месяц назад пользователем
- Тема «Кастомные поля и кеширование» закрыта для новых ответов.