Оптимизация на уебсайт

Привет,

В този пост ще споделя още един начин за оптимизация на уебсайт (в случая wordpress), чрез използване на tmpfs.

Оптимизация на уебсайт

Идеята

  • Да преместим tmpdir-а на MySQL в tmpfs.
  • Да преместим nginx кеширането в tmpfs.
  • Да преместим wordpress кеширането в tmpfs.

Решението

Първо трябва да разберем id-то на потребителите, чрез които вървят nginx и mysql (в моят случай: www-data,mysql).

beta:~# id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data),118(bind)
beta:~# id mysql
uid=104(mysql) gid=107(mysql) groups=107(mysql)

След това създаваме необходимите директории които ще монтираме като tmpfs.

mkdir /var/ramdrive-mysql
mkdir /var/ramdrive-nginx

И ги добавяме в /etc/fstab , от където ще се зареждат автоматично при всеки reboot.

tmpfs /var/ramdrive-mysql tmpfs rw,gid=107,uid=104,size=512M,nr_inodes=10k,mode=0700 0 0
tmpfs /var/www/root.bg/wp-content/cache tmpfs rw,gid=33,uid=33,relatime,size=4096000k,mode=755 0 0
tmpfs /var/ramdrive-nginx tmpfs rw,gid=33,uid=33,relatime,size=2048000k,mode=744 0 0

Тук е интересното, че използваме и съществуващата директория по подразбиране на wordpress cache – а именно : /var/www/root.bg/wp-content/cache.
Всички наши плъгини за кеширане по-подразбиране пишат там.

Настройка на MySQL

В /etc/mysql/my.cnf добавяме :

tmpdir = /var/ramdrive-mysql

и рестартираме процеса :

service mysql restart

Правим проверка дали всичко е ок :

MariaDB [(none)]> SHOW VARIABLES LIKE 'tmpdir';
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| tmpdir | /var/ramdrive-mysql |
+---------------+---------------------+
1 row in set (0.01 sec)

Настройка на Nginx

За Nginx нещата са доста по-сложни и е необходимо повечко настройки. За целта препоръчвам easyengine.io, където е обеснено подробно как се прави кеширането. В нашият случай важното е да използваме директорията, която предварително създадохме, а именно :

fastcgi_cache_path /var/ramdrive-nginx levels=1:2 keys_zone=WORDPRESS:50m inactive=60m;

Тук е хубаво да се знае, че направата на всичко това изисква root достъп до сървъра.

Заключение

След като направих всичко гореспоменато на моят уеб сървър, успях да сваля 0.40 секунди време за зареждане (тествах чрез pingdom.com).
Използването на кеширане (cache) е хубаво в много случаи – помага за бързото зареждане на сайта ни което пък е плюс за google и позицията ни там.

Това е!