WP File Cache 1.2.1

Теперь точно последний :-)

Я нарушил своё обещание и написал новую версию плагина WP File Cache — 1.2.1. Но эта версия будет последней (скорее всего). Что изменилось: оптимизирован PHP-код, ускорена работа методов класса FileCache (лишние проверки перенесены в функции wp_cache_xxx, что позволило избежать повторного исполнения одного и того же кода); блокировка файла при записи; плагин требует PHP версии не ниже 5.1.0; добавлена [...]

← Вернуться к полной версии записи «WP File Cache 1.2.1»…

Автор: ; опубликовано в: Плагины WordPress; метки: WordPress, WP File Cache, кэш, плагин
14
Янв
2010

RSS Комментарии к статье «WP File Cache 1.2.1» (46)  »

  1. Muse

    плагин не кэширует подобные запросы

    можно как-то посодействовать, чтобы они обрабатывались?

    • Muse

      вордпресс съел код, вот исправленный

      [-]
      View Code PHP
      $people = get_the_terms($post->ID , 'people');
      if ($people == '') {} else {
          echo "<ul>";
          foreach($people as $person) {
               $exist = post_exist($person->slug);
               if($exist == '') {
               echo "<li>$person->name</li>";
               } else {
                   echo "<li><a href=\"/$person->slug/\">$person->name</a></li>";
               }
          }
          echo "</ul>";
      }

      «если пост есть – выводим название вместе с ссылкой, если нет – просто название».

      • А что именное не кэшируется? post_exists() или get_the_terms()?

        • Muse

          post_exists()

          [-]
          View Code PHP
          function post_exist($title) {
              global $wpdb;
              $post_slug = stripslashes(sanitize_post_field('post_name', $title, 0, 'db'));
                  $query = "SELECT ID FROM $wpdb->posts WHERE 1=1 AND post_status = 'publish' AND post_type = 'post'";
              $args = array();
              if (!empty ($title)) {
                  $query .= ' AND post_name = %s';
                  $args[] = $post_slug;
              }
              if (!empty ($args))
                  return $wpdb->get_var($wpdb->prepare($query, $args));
              return 0;
          }
          • Как-то так:

            [-]
            View Code PHP

            function post_exists($title)
            {
                $res = wp_cache_get($title, 'existing-posts');
                if (false === $res) {
                    global $wpdb;
                    $query = "SELECT ID FROM $wpdb->posts WHERE 1=1 AND post_status = 'publish' AND post_type = 'post'";
                    $args = array();
                    if (!empty ($title)) {
                        $post_slug = stripslashes(sanitize_post_field('post_name', $title,  0, 'db'));
                        $query .= ' AND post_name = %s';
                        $args[] = $post_slug;
                    }

                    if (!empty ($args))
                        $res = $wpdb->get_var($wpdb->prepare($query, $args));
                    }
                    else {
                        $res = 0;
                    }

                    wp_cache_set($title, $res, 'existing-posts');
                }

                return $res;
            }

            Группу existing-posts, вероятно, нужно чистить при изменении статуса записи и удалении записи.

            PS — а в WordPress вроде бы существует функция post_exists()?

  2. Alex

    Владимир, спасибо за этот отличный плагин! Скорость загрузки страниц уменьшилась вдвое, но появилось много ошибок в админке. Из-за этого пришлось отказаться от использования плагина.
    Если можно, сделайте, пожалуйста, в следующих версиях возможность отключения кеширования для админки. Спасибо.

  3. [...] Где скачать, как установить и настроить, лучше всего прочитать на сайте разработчика: SJOC (актуальная версия 1.0) WPFC (актуальная и последняя версия 1.2.1) [...]

  4. [...] После того, как перерыл очередную гору материалов остановился на SJ Object Cache. По ссылке можете найти полное его описание, функционал, инструкции по установке(устанавливается, как любой другой плагин), а так же фидбэк с разработчиком. Отмечу, что плагин ориентирован на VDS-системы и для его работы необходимы eAccelerator/APC/xCache. Для шаред-хостингов предназначен его аналог от того же автора – WP File Cache. [...]

  5. Игорь

    Установил плагин, не ругается, все ок, но в /cache ничего не создается и фактически ничего не изменилось. В чем может быть дело?

    Пробовал /cache поменять на /dev/shm – ругается что директории кеша нет, хотя она есть

    • Например, у PHP нет прав на запись в каталог с кэшем

      • Игорь

        На сколько я понял, скрипт проверяет доступ к папке (я устанавливал руками chmod 777)

        • Игорь

          В папке /cache создалось много других пустых папок:
          /category
          /category_relationships
          /default
          /general
          …etc

          Но файлов-кеша нет. Что это может быть?

        • Смотрите логи ошибок web-сервера. Возможно, suphp не даёт записать файл, возможно, у Вас включен safe mode.

      • Игорь

        Разобрался. Оказывается скрипт создавал директории от apache:apache и потом не мог туда ничего записать. После смены chown – стал писать файлы и насоздавал 5,5Мб, но по скорости загрузки страниц выигрыша не произошло. С 2 – 2,5 сек увеличилось до 3-4 сек.

      • Игорь

        open_basedir – возможно. Не знаю где смотреть и как с ним поступить?!

  6. Классный плагин. Когда включил его, количество запросов с главной уменьшилось в три раза — с 100 да 29. С другими плагинами были проблемы.
    Однако теперь вот заметил, что в некоторых разделах не выводится на родительской странице список «дочерних» { функция wp_list_pages( $args ) в шаблоне страницы} и выдаёт ошибку:

    Fatal error: Out of memory (allocated 65536000) (tried to allocate 926716 bytes) in **/plugins/wp-file-cache/lib/class.FileCache.php on line 193

    Ошибка исчезает, если снять галочку с «Сохранять кэш между сессиями», однако, как вы и пишите, тогда производительность падает.

    На хостинге 64М ОЗУ (не ахти, конечно, и это часто даёт ошибки) и на сайте «тяжёлый» плагин Simple:press — кажись, кстати, только ваш WP File Cache с ним без конфликтов работает.

    Может это сообщение как-то поможет вам для усовершенстования плагина. В любом случае, буду благодарен за ответ.

    • Строка 193 — это не там, где unserialize() вызывается? Если да, то вряд ли смогу помочь — при десереализации действительно требуется дополнительная память.

      • да, там.
        Немного разобрался — в шаблоне страницы использовалась wp_list_pages() и отбирала до 30МБ (!) памяти. Удалил функцию, прописал списки вручную.
        Но теперь в админке не открываются страницы на редактирование (с записями — всё ок). Возможно, что-то похожее и у меня, но с др. плагином.
        Отключил связь страниц и форума – но не помогло.

        При отключении сохранения кэша между сесиями всё работает, страницы можно редактировать.

        Do not use cache in the Admin Panel – активировано.

  7. Если сохранять кеш межде сессиями, у меня не открывается /wp-admin/post-new.php?post_type=page (добавить страницу), хоть /wp-admin/post-new.php (добавить запись) — работает. Отображается только class=»wrap» с заголовком «Добавить страницу» и со словами «опубликовать», «сохранить» и тд

    Проблема исчезает, если в несохраняемые группы добавить `posts` — но тогда, соответственно, эффективности кеша практически не заметно. Может вместо posts что-то более конкретное задать можно?

    Буду благодарен, если поможете исправить.

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «WP File Cache 1.2.1»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा