WP File Cache 1.2.1
Теперь точно последний :-)
Я нарушил своё обещание и написал новую версию плагина WP File Cache — 1.2.1. Но эта версия будет последней (скорее всего).
Что изменилось:
- оптимизирован PHP-код, ускорена работа методов класса
FileCache(лишние проверки перенесены в функцииwp_cache_xxx, что позволило избежать повторного исполнения одного и того же кода); - блокировка файла при записи;
- плагин требует PHP версии не ниже 5.1.0;
- добавлена совместимость с WP 2.6;
- запись файла стала чуть быстрее;
- плагин не убьёт WordPress, если каталог
wp-content/plugins/file-cacheудалён, аwp-content/object-cache.phpпо тем или иным причинам остался.
Большое спасибо Алексею Лободину за тестирование!
Связанные записи
Автор: Vladimir; опубликовано в: Плагины WordPress; метки: WordPress, WP File Cache, кэш, плагин14
Янв
2010
Янв
2010


Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.






плагин не кэширует подобные запросы
можно как-то посодействовать, чтобы они обрабатывались?
вордпресс съел код, вот исправленный
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()?post_exists()
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;
}
Как-то так:
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()?Владимир, спасибо за этот отличный плагин! Скорость загрузки страниц уменьшилась вдвое, но появилось много ошибок в админке. Из-за этого пришлось отказаться от использования плагина.
Если можно, сделайте, пожалуйста, в следующих версиях возможность отключения кеширования для админки. Спасибо.
А что за ошибки? И какие плагины стоят? Отказаться от кэширования в админке будет проблемно, так как кэш может устареть.