Resident234
@Resident234
Back-End . PHP . Bitrix

Wordpress. Не работает кэширование. Что делать?

Добрый день.
Есть следующий код:
$blogtime = current_time('mysql'); 
list( $year, $month, $day, $hour, $minute, $second ) = preg_split( '([^0-9])', $blogtime );

// устанавливаем свой ключ кэша
$cache_key = 'vk_db_result' . $year . $month . $day;

// Если данных нет в кэше, то делаем запрос получаем данные и записываем их в кэш
if( ! $arMyFriendsIDs = wp_cache_get( $cache_key ) ){


    foreach($friends->get(VK_MY_ACCOUNT_ID__Resident234, array('first_name','last_name'))->batch(300) as $f) //BATCH MEAN $f WILL CONTAIN JUST 100 ELEMENTS, AND REQUEST WILL MADE FOR 100 ELEMENTS
    {
        /**
         * @var $f \getjump\Vk\ApiResponse;
         */

        foreach ($f->response->data->items as $object) {
            $arMyFriendsIDs[] = $object->id;
        }

    }

    wp_cache_set( $cache_key, $arMyFriendsIDs );
}

Проблема в том, что wp_cache_set не пишет данные в кэш, т.е. при каждом новом запуске код отрабатывает полностью.
В какую сторону копать ?
  • Вопрос задан
  • 884 просмотра
Решения вопроса 3
я наверное буду кэпом, но вам нужно дебажить... и заодно права на запись проверьте
Ответ написан
Комментировать
zorca
@zorca Куратор тега WordPress
Постоянство кэша объектов

Одним из ключевых моментов кэширования объектов в WordPress является то, что по умолчанию кэш является непостоянным. Это значит что все значения в кэше хранятся только на протяжении одного запроса, а при следующем запросе вашей страницы WordPress, кэш объектов снова пуст.

На первый взгляд такой кэш не очень полезен, но если посчитать например, сколько раз за один запрос WordPress выполняет функцию get_option(), то выгода от кэширования объектов становится очевидной.

Так же в WordPress есть возможность использовать внешнее хранилище для кэша объектов, например сервер Memcached или APC, при этом кэш объектов в WordPress становится постоянным. Это значит что при следующем обращении к вашей странице, ранее закэшированные значения становятся доступными.

https://wpmag.ru/2014/keshirovanie-obektov-wordpress/
Ваш кеп всем кепам кеп.
ПыСы. Храните кеш в Редиске и не майтесь дурью.
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Еще один кэп тут. По коду вроде все норм, у меня вопрос - а в папке wp-content у вас есть drop-in object-cache.php, который является реализацией интерфейса кеша к вашему конкретному кеширующему бекенду (redis, memcache, memcached, APC и тд)?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы