Самый быстрый в мире WordPress на shared хостинге

Время работы скрипта 0.018 секунд
Памяти использовано 69.5 килобайт

Это - не самописный скрипт “Hello, World!”. Это современный Wordpress. На шаред хостинге за 10 баксов в месяц. Именно за столько секунд он выводит страницу, именно столько килобайт использует.

Ни одному плагину такое не снилось. Total Cache, Max Site Cache - сосать им, не пересосать. А всё почему? Об этом я уже писал в “13 мегабайт памяти WordPress жрет только при запуске wp-config.php”.

Любой плагин, как бы он там не выеживался и не старался, запускается ПОСЛЕ подключения базовых файлов WordPress, то есть после wp-config.php. Так что максимальный потолок экономии и скорости для всяких Total Cache и Max Site Cache - это те самые 13 мегабайт памяти и десятые доли секунды.

А тут - 18 тысячных секунды и 70 килобайт на вывод страницы. Правда, клево? А секрет очень прост - самое быстрое кэширование, которое превращает даже дряхлый зомби-сайт, ползущий по газону, в бодренького Супермена, рассекающего галактику на световой скорости.

Метод этот очень прост. Банален, я бы сказал. Кэширование надо ставить ДО каких-либо инклюдов. И для этого придется самому переписать index.php у WordPressa.

Как это делается - хорошо рассказано здесь.

Алгоритм нового index.php такой:
1. генерируем имя файла в кэше на основе урла
2. смотрим, есть ли этот файл в кэше
3. если есть - тупо его открываем и показываем (1 функция readfile)
4. если файла в кэше нет или если время кэширования истекло - запускаем буферизацию вывода через ob_start, затем подключаем исходные функции обычного index.php, а затем вывод сгенерированной в буфере страницы и её запись в кэш.

Конкретно по ссылке, которую я дал, есть несколько косяков. К примеру, я столкнулся с тем, что fwrite не генерит файл, если в его имени слэши. Пришлось дописать функцию, генерирующую папки в кэше по урлу.

Вот что я наваял - кэширующий index.php. Предупреждаю, скрипт не универсальный и с другой структурой пермалинков может не заработать. Но можно посмотреть чисто для иллюстрации.

Чтобы сделать сверхскоростной WordPress, я выполнил 2 шага:
1. создал в корневой директории сайта папку cache с нужными правами (777)
2. заменил обычный index.php Wordpress на то, что в архиве.

И все полетело!

WordPress, если есть файл в кэше, вообще не запускается. Соответственно, не жрет память, не обращается к диску десятками инклюдов. А если файла нет - запускает и генерирует полноценную страницу.

Минусы самого быстрого WordPress в мире пока таковы:
1. динамические виджеты, комменты и т.д. на кэшированной странице не обновляются. Это можно в будущем вылечить переписыванием всех необходимых динамических элементов на JS и AJAX.

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

По сути, это даже не кэширование, а просто генерация статических HTML-страничек из WordPress. Быстро, дешево, сердито. На максимальной скорости, которая не снилась никаким плагинам.

Кто читает Смирнова также долго, как я, наверняка уже вспомнил статью Простое кэширование страниц. Патриарх давно уже обо всем написал, да :)

Самые простые вещи - самые быстрые.


4 Responses to “Самый быстрый в мире WordPress на shared хостинге”

  1. » Отчет по кэшированию за несколько дней Says:

    […] боевой сайт с WordPress, на котором я вручную сделал самое быстрое кэширование, несколько дней работает без […]

  2. » Еще один отчет Says:

    […] по-прежнему был доступен круглые сутки. Напомню, до ручного сверхбыстрого кэширования Wordpress сайт периодически был недоступен - что с плагинами, […]

  3. » Плавающий тулбар WordPress жрет до 3 мегабайт Says:

    […] свой перепаянный движок на другом сайте, увидел, что суперкэшированная версия жрет от 600 килобайт до 3 мегабайт […]

  4. » WP Super Cache Says:

    […] Буду краток - WP Super Cache с настроенным mod_rewrite делает кэширование так же и даже лучше, чем мой костыль, описанный тут. […]

Leave a Reply




#hello#