В сегодняшней статье мы расскажем вам как настроить кеширование в WordPress с помощью плагина W3 Total Cache и Nginx. Если вы используете easyengine, то можно пропустить всю статью, использовав лишь команду:
ee site create example.com --w3tc
Предполагается:
- Что вы уже установили PHP, MySQL, Nginx & Postfix
- Что вы уже установили свежую копию WordPress или же перенесли существующую на текущий сервер
Основываясь на этих предположениях, мы сразу перейдем к части настройки WordPress-Nginx.
Стандартная конфигурация WordPress-Nginx с W3 Total Cache:
Плагин W3 Total Cache предлагает огромное количество опций. Мы рекомендуем использовать нижеследующие:
- Page Cache – Disk Enhanced
- Minify – Отключите это, если только вы не уверены на 100%, что ваша тема/плагины будут корректно ее поддерживать. Автоматическая минификация крайне редко работает правильно.
- Database Cache – Memcache
- Object Cache – Memcache
- Browser Cache – Отключить
- CDN – Вы можете использовать любой CDN. Рекомендуется Amazon CDN либо Cloudflare.
Как вы успели заметить, мы выделили только 2 опции. И именно эти две опции мы будем обрабатывать в конфигурации.
server { server_name example.com www.example.com; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log debug; root /var/www/example.com/htdocs; index index.php; set $cache_uri $request_uri; # POST запросы и ссылки со строками запросов всегда отдаем PHP if ($request_method = POST) { set $cache_uri 'null cache'; } if ($query_string != "") { set $cache_uri 'null cache'; } # Не кешируем сыслки, которые содержат следующие сегменты if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $cache_uri 'null cache'; } # Не используем кеш для залогиненных пользователей либо недавних комментаторов if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") { set $cache_uri 'null cache'; } # Используем закешированные или актуальные файлы, если они существуют, иначе же отдаем запрос на WordPress location / { try_files /wp-content/cache/page_enhanced/${host}${cache_uri}_index.html $uri $uri/ /index.php?$args ; } location ~ ^/wp-content/cache/minify/[^/]+/(.*)$ { try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } # Кешируем статические файлы так долго, насколько это возможно location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { expires max; log_not_found off; access_log off; } }
Примечания:
- Для упрощения конфигурации мы не добавляли проверку на мобильные юзер-агенты. Лучше использовать адаптивный дизайн, нежели разрабатывать отдельный сайт для мобильных устройств.
- Вы не увидели в конфигурации специальных правил для минификации. Вышеприведенные правила будут обрабатывать минификацию W3 total без каких-либо изменений.
Не забудьте:
Всегда вначале тестируйте конфигурацию Nginx, а затем подгружайте её. Все изменения в конфиг Nginx должны сопровождаться следующими командами:
nginx -t && service nginx reload
Вот и все. Мы надеемся, что эта статья помогла вам настроить кеширование в WordPress с помощью плагина W3 Total Cache и Nginx.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.