RSS
 

Как подружить плагины DB Cache Reloaded Fix и WP-PostViews

03 Июл

Давольно-таки давно начал пользоваться плагином «WP-PostViews». И все было хорошо до тех пор, пока не решил задействовать  плагин «DB Cache Reloaded Fix» максимально.

Изначально  «DB Cache Reloaded Fix» не кеширует таблицы «wp_posts» and «wp_postmeta» и счетчик показа страниц работает на ура. Но эффективность кеширования запросов к БД в этом случае мала.

Чтобы поправить это дело, я в настройках «DB Cache Reloaded Fix» очистил поле «Cache filter» — после чего количество кешируемых запросов сильно увеличилось и соответственно скорость отклика возрасла.

Но плюсы получились с побочным эффектом — перестали работать счетчики просмотра страниц.

Вскрытие показало, что причина в том, как плагин «WP-PostViews» обновляет счетчик. Он берет текущее значение счетчика и к нему прибавляет 1. Вот здесь и загвоздка — ведь информация о счетчике хранится в таблице «wp_postmeta», значения которой стали кешироваться — получается мы все время толчемся на одном месте — к закешированному числу прибавляем 1 и так каждый раз при обращении к сайту.

Решение простое: «Обновлять счетчик прямым запросом к БД» — таким образом получится обойти закешированное значение счетчика.

Для внесения изменений в коде Вам нужно будет открыть в админке вкладку «Плагины->Установленные» и нажать «Изменить» для плагина «WP-PostViews».

Затем найти в коде строчку:

if(!update_post_meta($id, 'views', ($post_views+1))) {

и заменить ее на

if(!$wpdb->query('UPDATE wp_postmeta SET meta_value = meta_value + 1 where meta_key = \'views\' AND post_id = ' . intval($id) )) {

Все — счетчики будут работать.

P.S.
Один нюанс — Вы будете видеть изменение счетчиков не сразу, а так часто как у Вас настроено время жизни кеша (поле «Expire a cached query after» в плагине «DB Cache Reloaded Fix»).

 
комментария 3 | Просмотров: 7 727

Добавил Владимир в Wordpress, Документация

 

Tags: , ,

Ответить

 

 
  1. Евгений Понятовский

    at

    Не сработало… 🙁

     
  2. Евгений Понятовский

    at

    Строчку заменил, сайт перестал загружаться.
    Надеюсь на помощь… 🙂

    Пока пришлось отключить кэширование postmeta

     
    • Владимир

      at

      День добрый, Евгений.

      Возможно есть нюансы версий wordpress, DB Cache Reloaded Fix и WP-PostViews — напишите какие у Вас?

      + если сайт перестал загружаться — наверняка были какие-то ошибки в логах — если есть возможность — покажите их? Должно помочь понять проблему.