Поддержка Проблемы и решения Блок RSS не обновляется

  • Вставил в пост стандартный блок от WordPress под названием RSS и подключил туда ленту. Но информация на странице не обновляется по мере пополнения ленты. В чём проблема? Или обновление вообще в этом блоке не заложено?

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • кэширование есть на сайте?

    Модератор Yui

    (@fierevere)

    ゆい

    Он похоже и при отсутствии кеширования достаточно ленивый к обновлениям.

    Стоит autooptimizer, попробовал выключить, но эффекта не наблюдается. О никаком другом кешировании не знаю, как проверить?

    Вообще, у него где-то прописаны интервалы обновления? И главный вопрос – он обновляется или обновление не заложено в его функции?

    Модератор Yui

    (@fierevere)

    ゆい

    "SETEX" "san3ms1:transient:feed_acda6df291d5ca5b4531d31417c26631" "43200"

    попытка установить транзиент с временем жизни 43200 сек, т.е. 12 часов.
    Я так понимаю ранее этого срока он обновлять содержимое ленты не будет

    Настроек у него к сожалению нет.

    Я нашёл такое решение: добавить в functions.php

    add_filter( 'wp_feed_cache_transient_lifetime', 
       create_function('$a', 'return 600;') );

    Это работает. Но, подскажите, насколько это безопасно? Не будет ли адской нагрузки на хост? И что такое транзиент?

    Модератор Yui

    (@fierevere)

    ゆい

    ну вот, сами и нашли решение.

    Транзиент — временный объект данных закешированный либо в таблицу wp_options, либо при наличии объектного кеша транзиент кешируется в память объектного кеша (redis, memcached итд)
    Посмотреть транзиенты в MySQL можно плагинами типа такого
    https://wordpress.org/plugins/transients-manager/
    Транзиенты в другом объектном кеше можно посмотреть средствами управления этими кешами (например redis-cli monitor я использовала чтобы посмотреть что используется для установки транзиента с данными фида)

    У транзиентов есть время жизни, после чего они автоматически становятся недействительными. Для объекта фида это 12 ч.

    Вы своим кодом снижаете это время до 600 с, т.е. через 10 минут транзиент станет недействителен и будут запрошены данные снова,
    10 минут это нормально для лент RSS.

    Адской нагрузки на хост это не создаст. Однако, есть опасность в том, что если удаленный сервер, с которого вы получаете RSS работать не будет, то и у вас на странице создастся задержка от 15 до 90 сек (сколько там задан таймаут подключений к серверу я точно не скажу)

    Модератор Yui

    (@fierevere)

    ゆい

    Вот вам еще рекомендации от коллег:

    otto42:
    10 minutes is way too fast to be refreshing a feed
    Also, create_function is deprecated and throws errors in PHP 7
    Context is important, but at that rate I’d be looking to implement a push mechanism instead

    10 минут это слишком короткий период, всё же обратите внимание на содержимое ленты, нужно ли вам обновлять ее настолько часто?
    Также не рекомендуется использовать create_function, это может создавать проблемы с новыми версиями PHP и в дальнейшем поддерживаться не будет

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Блок RSS не обновляется» закрыта для новых ответов.