В сегодняшней статье мы расскажем вам как настроить кеширование в 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.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.






 
							
					 
							
					