Ars Longa, Vita Brevis

Июнь 12, 2008

WP File Cache: замена WP_Object_Cache с поддержкой долговременного кэширования

Рубрика: WordPress
Метки: , ,
Vladimir @ 5:18 дп
RSS 2.0

Увеличиваем производительность WordPress подручными методами

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

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

С проблемами быстродействия можно бороться очень радикально: генерировать и отдавать статические версии страниц (благо, плагинов хватает). Но кэширование на уровне страниц мне кажется недостаточно гибким (например, HyperCache убирает cookies, идентифицирующие пользователя (что логично), в результате чего при вводе комментария пользователю приходится вновь набирать свои данные; не поддерживаются динамические элементы на страницах и т.п.).

К счастью, WordPress достаточно гибок для того, чтобы позволить пользователю использовать свой собственный механизм кэширования данных вместо стандартного. Стандартный механизм кэширования реализован в классе WP_Object_Cache и позволяет кэшировать данные только на время выполнения скрипта. Это не всегда удобно, ибо многие данные не меняются в течение долгого времени (соответственно, можно экономить на запросах). К тому же некоторые запросы, которые осуществляет WordPress, не очень хороши — они нагружают MySQL, а оптимизировать их очень трудно.

Посидев немного и подумав, я написал свою собственную замену для WP_Object_Cache: плагин называется WP File Cache.

Функциональность плагина:

  • поддержка долговременного (persistent) кэширования;
  • полная совместимость интерфейса с WP_Object_Cache;
  • кэширование данных в памяти для увеличения быстродействия.

Плагин пока находится в стадии тестирования, но его работа мне уже очень нравится :-)

Скачать WP File Cache.

Замечания по установке:

  1. Каталог /wp-content/plugins/file-cache/cache должен быть доступен на запись пользователю, под которым бегает web-сервер:
    [-]
    View Code Bash
    chmod -R 0777 wp-content/plugins/file-cache/cache
  2. При активации плагин копирует файл object-cache.php в каталог /wp-content/. Как следствие, каталог должен быть доступен плагину на запись.
  3. Для срочной деактивации плагина можно удалить или переименовать файл /wp-content/object-cache.php. В этом случае WordPress будет использовать встроенные механизмы кэширования.

Комментарии к статье "WP File Cache: замена WP_Object_Cache с поддержкой долговременного кэширования" (2) »

  1. [Июнь 12, 2008 5:26 дп] Vladimir:

    Из недостатков: если WordPress/плагины забывают обновлять кэш (полагаясь на то, что кэш будет сброшен, когда скрипт завершится), могут отдаваться устаревшие данные (я это заметил в админке: черновиков статей не было, но WP писал, что есть один черновик). Буду пытаться найти решение.

    #1
  2. [Июнь 12, 2008 5:27 дп] Vladimir:

    С другой стороны, с пользовательским интерфейсом вроде все в порядке и данные отображаются нормально :-)

    #2

RSS лента комментариев к этой записи. TrackBack URL

Оставить комментарий к записи "WP File Cache: замена WP_Object_Cache с поддержкой долговременного кэширования"

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