Настройка блога Wordpress на Mac OS X. Часть 3, кеширование. Wordpress memcached настройка
Супер быстрый web сервер nginx+hhvm+mysql+php7+memcached для wordpress
fastcgi_cache_path /caches/fastcgi levels=1:2 keys_zone=fastcgi_cache:16m max_size=256m inactive=1d;
upstream backend-itc-life.ru {
server unix:/var/run/php7-itc-life-a.sock fail_timeout=10s;
server unix:/var/run/php7-itc-life-b.sock fail_timeout=10s;
#server 127.0.0.1:9000;
}
server {
listen 80;
server_name
www.itc-life.ru
itc-life.ru
;
rewrite ^/(.*)$ https://itc-life.ru/$1 permanent;
location ^~ /.well-known/acme-challenge/ {
root /var/www/letsencrypt;
}
}
server {
listen 443 ssl http2;
server_name
www.itc-life.ru
itc-life.ru
;
access_log /var/log/nginx/itc-life.443.log;
error_log /var/log/nginx/itc-life.ettor.log;
root /home/a/avgaluqh/itc-life.ru/public_html/;
index index.php index.html;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_certificate /etc/letsencrypt/live/itc-life.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/itc-life.ru/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_stapling on;
ssl_stapling_verify on;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET';
location ^~ /.well-known/acme-challenge/ {
root /var/www/letsencrypt;
}
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
location ~ /\. {
deny all; # запрет для скрытых файлов
}
location ~* /(?:uploads|files)/.*\.php$ {
deny all; # запрет для загруженных скриптов
}
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires max; # кеширование статики
}
location / {
try_files $uri $uri/ /index.php?$args; # permalinks
}
location ~ \.(hh|php)$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass backend-itc-life.ru;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass_header Cookie; # Необходимо для передачи cookie в соответствующие переменные, например cookie с именем phpsessid будет находится в переменной $cookie_phpsessid
fastcgi_ignore_headers Cache-Control Expires Set-Cookie; # Игнорируем заголовки, относящиеся к кешированию, полученные от FastCGI-сервера
fastcgi_cache_key "$server_addr:$server_port$request_uri|$cookie_phpsessid"; # Формируем уникальный ключ; в данном случае различаем пользователей с помощью $cookie_phpsessid
fastcgi_cache fastcgi_cache; # Говорим о том, что использовать надо вышеобъявленную кеш-зону fastcgi_cache
fastcgi_temp_path /caches/temp 1 2; # Указываем папку для хранения временных файлов
fastcgi_cache_use_stale updating error timeout invalid_header http_500; # Используем вариант из кеша (даже если он устарел) в случае ошибки
fastcgi_cache_valid 10s; # Время жизни кеша для ответов 200, 301 & 302
#fastcgi_cache_valid any 10s; # Таким образом можно закешировать любые ответы
}
}
itc-life.ru
Настройка блога Wordpress на Mac OS X. Часть 3, кеширование
Для быстрой работы блог нужно всячески кешировать. Я использую комбинацию из нескольких способов - кеширование на уровне Wordpress WP Super Cache, на уровне PHP - eAccelerator, Memcached и заодно кеширование запросов MySQL. По крайней мере хуже не становится, а улучшение производительности налицо.
Один из полезнейших плагинов Wordpress - это WP Super Cache. Он из категории "must have". Настройки:
Есть некоторые проблемы с WPTouch, поэтому нужно отключить кеширование для мобильных устройств:
Список для копирования:
bot ia_archive slurp crawl spider iphone ipod android dream cupcake webos incognito webmate opera mini blackberry9530 blackberry9500Memcached. Я его раньше не использовал, но всегда хотел. Особой эффективности для небольшой нагрузки я не заметил, но он по крайней мере работает. Процесс установки:
$ sudo port install memcached $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.memcached.plist $ sudo port install php5-memcacheИ перезапускаем apache.
Статус демона memcached можно посмотреть таким образом:
$ echo stats | nc 127.0.0.1 11211Для того, чтобы Memcached использовался в Wordpress, ставим плагин WP Memcached Manager. Настройки:
Статус работы:
EAccelerator. Нужен. Однозначно. Теория - на сайте разработчиков. Процесс установки и настройки:
$ sudo port install php5-eaccelerator $ sudo vim /opt/local/var/db/php5/eaccelerator.ini eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="*.php" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"И перезагружаем apache.
Включаем кеширование запросов в MySQL:
$ sudo vim /etc/my.cnf query_cache_type = 1 query_cache_size = 26214400И перезагружаем MySQL.
Статус работы:
$ mysql mysql SHOW STATUS LIKE 'Qcache%'; SHOW STATUS LIKE 'Questions%';И в завершение тестируем быстродействие сайта:
$ ab -n 1000 -c 1 http://theapplegeek.ruНо и это ещё не всё. Продолжим оптимизацию уже на nginx, одно из направлений - выставление Expire для определённых типов файлов, а также компресирование ответов. Продолжение следует.
ctrld.me
Memcached + W3 Total Cache
Кэширование данных сайта является одной из самых важных функций, благодаря чему увеличивается скорость загрузки вашего сайта и снижается нагрузка на хостинг. В ходе экспериментов с методами кэширования, в настоящий момент я для себя выбрал Memcached, он показал самые впечатляющие результаты. До этого, из последних, я использовал небезызвестный плагин WP Super Cache, который толком ничего не ускорял, может какие-то доли секунд, не более того. Зарубил я его!
Подробнее о Memcached
Memcached — это специальный сервис с программным обеспечением, где происходит кэширование данных в его оперативную память (хранилище) на основе хеш-таблиц. Каждому типу кэша (страница, запись, код и др.) присваивается отдельный уникальный ключ. Но, самое главное, что кэширование происходит в обход базы данных вашего сервера, тем самым не затрагивая и экономя его ресурсы.
Сервер Memcached еще называют «демоном». И это действительно соответствует названию. Потому что работает Memcached молниеносно. Рассмотрим его действие на практике.
Пользователь заходит с поиска на страницу вашего сайта. Далее, по традиции, должен идти запрос этой самой страницы в базу данных, чтобы ее сгенерировать и показать пользователю. Бедная бедная база, сколько же ей понадобится времени, чтобы воссоздать всю структуру этой страницы с ее скриптами, кодами, картинками. Не будем беспокоить нашу базу данных, пусть остается в неведении.
А на сцену выходит наш герой Memcached. В мгновение ока он отдает пользователю уже готовую страницу из своего кэша без всяких там куда-то запросов, он уже все заранее заготовил. И эта отдача происходит всего за 0.001-0.005 с, молниеносно, так как достаточно только обратиться к ключу заготовленного типа кэша. По крайней мере, у меня обычно за такое время идет ответ на запрос. Если же страница еще ни разу не запрашивалась и ее нет в кэше, то Memcached также быстро ее внесет в базу кэша и подаст на блюде.
Немного фактов. Программное обеспечение Memcached используют такие монстры, как: Wikipedia, Youtube, Twitter, Facebook, WordPress.com…
Как установить Memcached
Здесь существует несколько способов. Один из более сложных для начинающих вебмастеров, это установка Memcached на свой хостинг, если вы обладаете нужными правами админа. Что больше подходит для VPS — виртуальный выделенный сервер. Также можно скачать и установить программное обеспечение Memcached с оф. сайта (http://memcached.org/) на свой компьютер, будет собственный локальный сервер кэширования.
Эти два вышеперечисленных способа и ряд других могут вызвать много трудностей у новичков, достаточно взглянуть на мануалы в интернете по установке Memcached. Мы рассмотрим более легкий и удобный вариант — это установка Memcached с помощью плагина W3 Total Cache. Внимание! Есть маленькая иголка в стоге сена — ваш хостинг должен уже иметь настроенный Мемкеш. Это можно узнать в службе поддержки сервера. Большинство известных хостингов предоставляют такую возможность.
W3 Total Cache + Memcached
Плагин W3 Total Cache является очень популярной системой кэширования. Можно даже сказать, что лучший среди себе подобных. Именно он и стоит сейчас на моем сайте. Я не буду описывать его установку с настройкой, так как не хочу переписывать стотысячный раз одно и то же. Этого добра в интернете навалом, разберетесь без труда. Наша миссия — это Memcached (Мемкеш).
Заходим в настройки плагина W3 Total Cache, а именно в General Settings. А далее все просто как дважды два! В выбранных вами типах кэша (page, database и др.) в поле метода кэширования (Cache Method) выбираем наш Memcached. Если ваш хостинг имеет в своем арсенале Мемкеш, то он будет активен для выбора.
Не забудьте сохранять настройки под каждой опцией.
Проверка работы Memcached
Чтобы проверить корректность работы Memcached, проделываем следующее. Нужно выйти из админки сайта и зайти заново на сайт в качестве гостя, или откройте страницу в режиме инкогнито. На любой из страниц нажмите CTRL+U, в исходном коде должно быть примерно так.
Самые важные строчки в нашем случае, это:
- Engine — название метода кэширования.
- Caching — enabled (система кэширования включена).
- Status — показывает статус страницы, в кэше она или нет. Сразу могут не все страницы закэшироваться, но с посещением их пользователями все войдет в кэш.
Также можно увидеть число закэшированных объектов (2) и скорость загрузки страницы (1). Но эти дополнительные параметры отмечаются галочками отдельно в настройках W3 Total Cache (General Settings — Debug), я их специально отметил и выставил для показа эффективности Memcached. Как видите скорость отдачи страницы пользователям впечатляет — 0,004 с. Если далее походить по страницам, попавшим в кэш, то все грузится почти моментально. Действительно — демон!
На этом все. Эксперимент с методом кэширования Memcached я провел и пока мой выбор остановлен на демоне. Но это всего лишь пока. В дальнейшем я хочу еще испытать некоторые системы кэша, о чем вам непременно расскажу в статьях.
zarabotatj-v-internete.ru
Установка eAccelerator и Memcache на сайт с WordPress на VDS FreeBSD. Шпаргалка по установке.
На днях обновлял VDS понял, что нет у меня шпаргалки по установке eAccelerator + memcached на VDS с сайтом на WordPress. Ничего особенно сложного, но когда делаешь раз в год, естественно ничего не помнишь и каждое движение приходится гуглить. Ну пусть здесь будет.Вобщем что имеем:
- VDS FreeBSD 8 с панелькой ISP Manager Lite от RuWeb
- Apache ITK 2.22 + PHP 5.2 как модуль апача
- Nginx 1.2.5
- WordPress 3.3
Ставить будем из портов, соответственно порты при необходимости обновляем:
portsnap fetch update
Ставим eAccelerator
# cd /usr/ports/www/eaccelerator# make install clean
Готовим для него директорию
# mkdir /var/tmp/eaccelerator# chown www /var/tmp/eaccelerator# chmod 0700 /var/tmp/eaccelerator
Сама директория, права и юзер может отличаться. Если всё ок, то после начала работы eAccelerator эта директория начнет заполняться. Если она будет пустой и, если не заданы параметры не сохранять на диск – значит что-то с папками не так.
В конец php.ini добавляем.
; eAcceleratorzend_extension="/usr/local/lib/php/20060613/eaccelerator.so"eaccelerator.shm_size="64"eaccelerator.cache_dir="/tmp/eaccelerator"eaccelerator.enable="1"eaccelerator.optimizer="1"eaccelerator.check_mtime="1"eaccelerator.debug="0"eaccelerator.filter=""eaccelerator.shm_max="0"eaccelerator.shm_ttl="3600"eaccelerator.shm_prune_period="1800"eaccelerator.shm_only="0"eaccelerator.compress="1"eaccelerator.compress_level="9"
Настройки eAccelerator отдельная тема. Понаписано на эту тему не мало. У меня например здесь .
Теперь установим Memcache
# cd /usr/ports/databases/memcached# make install clean
Добавляем в файл /etc/rc.conf
memcached_enable="YES"memcached_flags="-l 127.0.0.1 -m 256"
Последняя строка – чтобы слушать только локалхост и сколько памяти не жалко.
# /usr/local/etc/rc.d/memcached start
Ставим модуль для PHP
# cd /usr/ports/databases/pecl-memcache# make install clean
Перегружаем апач.
Сам по себе memcache это уже хорошо, nginx умеет с ним работать, например. Но лучше если memcache будет использоваться в скриптах, в моем случае это вордпресс. Для него есть плагин, который позволяет хранить объекты WordPress в memcache. Там написано как его устанавливать.
По идее в такой конфиге всё должно летать.
azzrael.ru