Как ускорить WordPress на Mac: локальная разработка и оптимизация

a close up of a web page on a computer

Введение

Локальная разработка WordPress на macOS часто оказывается bottleneck‑ом, замедляющим цикл разработки и тестирования. В этой статье мы разберём три популярных среды – Laravel Valet, Docker Desktop и MAMP – и покажем, как их правильно настроить, чтобы получить скорость сравнимую с продакшеном. Кроме того, расскажем о профилировании, отладке и практических трюках, которые помогут сократить время отклика страниц в несколько раз.

Laravel Valet: лёгкая и быстрая среда

Почему Valet?

Valet использует встроенный в macOS dnsmasq и nginx, поэтому не требует виртуальных машин или тяжёлых контейнеров. Всё, что нужно – Homebrew и несколько команд. Это делает Valet идеальным для быстрого старта.

Установка и базовая конфигурация

# Устанавливаем Homebrew (если ещё не установлен) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Устанавливаем Valet brew install php composer global require laravel/valet valet install # Переходим в папку с проектами и связываем её cd ~/Sites valet park # Создаём новый сайт WordPress mkdir mysite && cd mysite wp core download --locale=ru_RU wp core config --dbname=mysite --dbuser=root --dbpass= --dbhost=127.0.0.1 wp core install --url="mysite.test" --title="My Site" --admin_user=admin --admin_password=secret --admin_email=admin@example.com

После выполнения этих команд ваш сайт будет доступен по mysite.test. Valet автоматически использует PHP‑FPM с настройками opcache, что уже даёт прирост в 30‑40%.

Тонкая настройка PHP для ускорения

Откройте файл /usr/local/etc/php/8.2/php.ini (путь может отличаться) и включите/отрегулируйте следующие директивы:

opcache.enable=1 opcache.memory_consumption=256 opcache.max_accelerated_files=10000 opcache.validate_timestamps=0 realpath_cache_size=4096k realpath_cache_ttl=600

Эти параметры позволяют хранить скомпилированные скрипты в памяти и уменьшить обращения к файловой системе.

Docker Desktop: контейнерный подход

Преимущества контейнеризации

Docker обеспечивает изоляцию окружения, одинаковую конфигурацию на всех машинах разработчиков и простую миграцию в продакшен. Кроме того, Docker позволяет быстро переключаться между несколькими версиями PHP и MySQL.

Docker‑compose файл для WordPress

version: '3.8' services: wordpress: image: wordpress:6.4-php8.2-fpm ports: - "8000:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: secret WORDPRESS_DB_NAME: wordpress volumes: -./wp-data:/var/www/html depends_on: - db restart: unless-stopped db: image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password environment: MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: rootsecret volumes: - db_data:/var/lib/mysql restart: unless-stopped volumes: db_data: driver: local wp-data: driver: local

Запустите окружение командой docker compose up -d и откройте http://localhost:8000. Чтобы ускорить работу, добавьте к сервису wordpress параметр environment WORDPRESS_CONFIG_EXTRA="define('WP_CACHE', true);" и смонтируйте opcache.ini в контейнер.

Тонкая настройка MySQL (InnoDB)

Для ускорения запросов в базе используйте рекомендации из статьи InnoDB в WordPress: полная оптимизация. Например, увеличьте innodb_buffer_pool_size до 50% ОЗУ контейнера.

MAMP: классический стек для новичков

Когда выбирать MAMP

MAMP – это готовый пакет Apache, MySQL и PHP, который ставится за один клик. Он удобен, если вы только начинаете и не хотите возиться с Homebrew или Docker.

Оптимизация MAMP под WordPress

Откройте /Applications/MAMP/conf/php7.x/php.ini и включите те же параметры opcache, что и в Valet. Кроме того, в httpd.conf включите модуль mod_deflate для сжатия HTML, CSS и JS.

AddOutputFilterByType DEFLATE text/html text/css application/javascript

Не забудьте включить Cloudflare Turnstile для защиты от спама без лишних запросов к серверу.

Отладка и профилирование

Инструменты профилирования

  • Query Monitor – плагин, показывающий время выполнения запросов, хуков и скриптов.
  • Xdebug – позволяет ставить брейкпоинты и измерять время исполнения функций.
  • WP‑CLI profile – команда wp profile run собирает статистику по запросам.

Настройка Xdebug в Valet и Docker

Для Valet добавьте в php.ini:

xdebug.mode=debug,develop xdebug.start_with_request=yes xdebug.client_host=127.0.0.1

В Docker добавьте сервис php с расширением xdebug и пробросьте порт 9003.

Тестирование производительности

Запустите ab -n 1000 -c 50 http://mysite.test/ (ApacheBench) и сравните среднее время отклика до и после оптимизаций. Ожидаемый результат – снижение от 300 мс до 120‑150 мс.

Практические советы по ускорению WordPress на Mac

  1. Используйте PHP‑FPM + OPcache – основной драйвер ускорения.
  2. Отключите ненужные плагины и темы в локальной среде.
  3. Включите object cache через Redis или Memcached. В Docker это отдельный сервис, в Valet – brew install redis && valet use redis.
  4. Минифицируйте CSS/JS с помощью инструментов сборки (например, Laravel Mix).
  5. Регулярно проверяйте SQL‑запросы через Query Monitor и применяйте рекомендации из InnoDB‑оптимизации.

Следуя этим шагам, вы сможете добиться скорости разработки, сравнимой с продакшен‑сервером, и сократить время на тестирование новых функций.

Заключение

Выбор среды разработки зависит от ваших предпочтений: Valet – для скорости и простоты, Docker – для изоляции и совместимости, MAMP – для новичков. Независимо от выбора, правильная настройка PHP, MySQL и кеширования обеспечивает ускорение WordPress на Mac до 2‑3 раз. Не забывайте про профилирование и регулярный аудит кода – это гарантирует, что ваш локальный стенд будет работать так же быстро, как и живой сайт.

❓ Часто задаваемые вопросы

Как переключить версию PHP в Laravel Valet?

Выполните команду valet use php@8.2 – Valet автоматически перезапустит nginx и PHP‑FPM с новой версией.

Можно ли использовать один Docker‑compose файл для нескольких проектов?

Да, достаточно вынести сервисы в отдельный файл docker-compose.yml и подключать их через extends или использовать переменные окружения для разных портов.

Почему в MAMP иногда падает MySQL после обновления macOS?

Обновление может изменить права доступа к каталогу /Applications/MAMP/tmp/mysql. Проверьте, что пользователь имеет права чтения/записи.

Как отследить медленные запросы WordPress в локальном окружении?

Включите WP_DEBUG_LOG и установите плагин Query Monitor – он покажет запросы с временем выполнения более 100 мс.