بهینهسازی برای WordPress
در این مقاله:
رفع مشکلات عملکردی اپلیکیشینهای بر پایهی وب به راحتی ممکن نیست. میزان پاسخگویی اپلیکیشن شما در یک لحظه به عوامل بسیاری بستگی دارد: کد اپلیکیشن، پلاگینهای نصب شده، بار AWS، نوع سرور، مکانیزم ذخیره در حافظهی نهان و… .
بیشترین و معمولترین علت افت عملکرد، نداشتن cache است. با فعال کردن آن، که برای اکثر کتابخانههای Bitnami کار چندان مشکلی نیست، عملکرد سرور شما به شکلی قابلتوجه ارتقا پیدا میکند.
مهم: برای اعمال cache هر پلاگین، فرض بر آن است که وردپرس روی آدرس root دامنهی شما یعنی آدرسهایی مانند: http://mywp.bitnamiapp.com و http://example.com در حال کار است.. برای انجام این امر لطفن از ابزار bnconfig استفاده کنید.
W3 Total Cache
مراحل زیر را طی کنید:
- پلاگین را از این آدرس دانلود کنید: http://wordpress.org/extend/plugins/w3-total-cache/ .
- بعد از دانلود در اکثر موارد فقط کافیست که Page Caching را به همراه گزینهی disk فعال کنید.
عیبیابی
نصب
هنگام نصب W3 Total Cache ممکن است با خطایی روبهرو شوید که بیانگر شناسایی نشدن برخی از ماژولهای Apache در سرور هستند، و این در حالی باشد که این ماژولها نصب هستند. این خطا، باگی مشهور در پلاگین W3 Total Cache است و میتوانید به راحتی از آن چشمپوشی کنید.
دیباگ کردن
اگر در پیکربندی W3 Total Cache به مشکل برخوردید، Debug mode را فعال کنید. وارد پنل مدیریتی W3 Total Cache شوید و حداقل گزینهی Page Cache را در بخش Debug انتخاب کنید. سپس با مرورگر به یکی از صفحات وبسایت خود بروید و source code را بررسی کنید. در انتهای source code باید اطلاعات مربوط به دیباگ وجود داشته باشد که میتوانید به کمک آن بررسی کنید آیا ذخیرهسازی در حافظهی نهان به درستی کار میکند یا نه.
اگر وردپرس در مسیر /wordpress نصب شده باشد ممکن است بین بازنویسیهای لینکهای دایمی و آنهایی که پلاگین W3 Total Cache اضافه میکند تضادی وجود داشته باشد. برای حل این مشکل مطمین شوید که تمامی ورودیهای Rewrite در فایل /opt/bitnami/apps/wordpress/conf/httpd-app.conf حذف یا به حالت comment در آمده باشند.
WP Super Cache
Apache
مراحل زیر را طی کنید:
- پلاگین را از آدرس https://wordpress.org/plugins/wp-super-cache دانلود کنید.
- این دایرکتوری را در دایرکتوری plugins آپلود کنید. با این کار دایرکتوری /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/wp-super-cache ایجاد میشود.
- اگر از WordPress MU یا WordPress Multisite استفاده میکنید، آن را در حالت network wide فعال کنید.
- در بخش Settings وارد قسمت WP Super Cache شوید و ذخیرهسازی در cache را فعال کنید.
استفاده از mod_rewrite
برای فعالسازی این قابلیت فایل /opt/bitnami/apps/wordpress/conf/htaccess.conf را ویرایش و محتوایی را به آن اضافه کنید که موقع کلیک روی لینک Update Mod_rewrite rules برای شما نمایش داده میشود. فایل htaccess.conf را بهروزرسانی کنید. فایل در نهایت باید به شکل زیر در بیاید:
<Directory "/opt/bitnami/apps/wordpress/conf/">
#
# BEGIN WPSuperCache
#
# NOTE: You should include here the content displayed when clicking the "Update Mod_rewrite rules" button
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
#
# END WPSuperCache
#
</Directory>
این خطوط را نیز به انتهای فایل اضافه کنید:
<Directory "/opt/bitnami/apps/wordpress/htdocs/wp-content/cache">
#
# BEGIN supercache
#
<IfModule mod_mime.c>
<FilesMatch "\.html\.gz$">
ForceType text/html
FileETag None
</FilesMatch>
AddEncoding gzip .gz
AddType text/html .gz
</IfModule>
<IfModule mod_deflate.c>
SetEnvIfNoCase Request_URI \.gz$ no-gzip
</IfModule>
<IfModule mod_headers.c>
Header set Cache-Control 'max-age=3, must-revalidate'
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html A3
</IfModule>
#
# END supercache
#
</Directory
NGINX
گامهای زیر را طی کنید:
- پلاگین را از آدرس https://wordpress.org/plugins/wp-super-cache دانلود کنید.
- با کمک SSH به سرور متصل شوید و با اجرای دستور زیر قابلیت نوشتن در فایل wp-config.php را فعال کنید:
sudo chmod 660 /opt/bitnami/apps/wordpress/htdocs/wp-config.php
- این دایرکتوری را در دایرکتوری plugins آپلود کنید. با این کار دایرکتوری /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins/wp-super-cache ایجاد میشود.
- اگر از WordPress MU یا WordPress Multisite استفاده میکنید، آن را در حالت network wide فعال کنید. اگر خطاهایی دربارهی مجوزها نمایش داده شد، از آنها چشمپوشی کنید.
- با کمک SSH به وردپرس متصل شوید و فایل /opt/bitnami/apps/wordpress/conf/nginx-app.conf را ویرایش کنید. بلاک زیر را در آن بیابید:
if ($request_uri !~ "^/phpmyadmin.*$")
{
set $test A;
}
خطوط زیر را دقیقن بالای بلاک فوق اضافه کنید:
# WP Super Cache rules.
# Designed to be included from a 'wordpress-ms-...' configuration file.
set $cache_uri $request_uri;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $cache_uri 'null cache';
}
if ($query_string != "") {
set $cache_uri 'null cache';
}
# Don't cache uris containing the following segments
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';
}
# Don't use the cache for logged in users or recent commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
set $cache_uri 'null cache';
}
# START MOBILE
# Mobile browsers section to server them non-cached version. COMMENTED by default as most modern wordpress themes including twenty-eleven are responsive. Uncomment config lines in this section if you want to use a plugin like WP-Touch
# if ($http_x_wap_profile) {
# set $cache_uri 'null cache';
#}
#if ($http_profile) {
# set $cache_uri 'null cache';
#}
#if ($http_user_agent ~* (2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800)) {
# set $cache_uri 'null cache';
#}
#if ($http_user_agent ~* (w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-)) {
# set $cache_uri 'null cache';
#}
#END MOBILE
# Use cached or actual file if they exists, otherwise pass request to WordPress
location / {
try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php?$args ;
}
قوانین بالا از مستندات وردپرس برداشت شدهاند اما بهشکل رسمی پشتیبانی نمیشوند.
- NGINX را دوباره راهاندازی کنید.
- در بخش Settings وارد قسمت WP Super Cache شده و ذخیرهسازی در حافظهی نهان را فعال کنید.
عیبیابی
دیباگ کردن
اگر در پیکربندی WP Super Cache به مشکل برخوردید، Debug mode را فعال کنید. وارد تنظیمات WP Super Cache شوید، روی Debug کلیک کنید و گزینهی debugging را فعال کنید. پس از ذخیرهی تغییرات، فایل لاگ فعلی را بالای صفحهی وب خواهید یافت.
نصب قبلی
اگر پیش از این WP-Cache را نصب کردهاید، لطفن آن را غیرفعال کنید. wp-config.php را ویرایش و مطمین شوید که تعاریف WP_CACHE و WPCACHEHOME پاک شده باشند. فایلهای /opt/bitnami/apps/wordpress/htdocs/wp-content/wp-cache-config.php و /opt/bitnami/apps/wordpress/htdocs/wp-content/advanced-cache.php را حذف کنید. زمانی که این پلاگین را نصب کنید، این فایلها دوباره ایجاد میشوند.
خطاهای مربوط به عدم وجود فایلهای پیکربندی
با کمک SSH به سرور متصل شوید و با اجرای دستور زیر قابلیت نوشتن در فایل wp-config.php را فعال کنید:
sudo chmod 660 /opt/bitnami/apps/wordpress/htdocs/wp-config.php
در صورت نیاز پلاگین WP Super Cache را دوباره فعال کنید و مطمین شوید که پیامهای خطا دیگر ظاهر نمیشوند. پس از اطمینان از اینکه پلاگین WP Super Cache فعال و در حال کار است، دستور زیر را اجرا کنید تا بنا به ملاحظات امنیتی، مجوزهای فایل wp-config.php به حالت اولیه برگردد:
sudo chmod 640 /opt/bitnami/apps/wordpress/htdocs/wp-config.php
Quick Cache
گامهای زیر را طی کنید:
- پلاگین را از https://wordpress.org/plugins/quick-cache دانلود کنید.
- آن را نصب و فعال کنید.
عیبیابی
مشکلات مربوط به مجوز
ممکن است با خطاهای زیر روبهرو شوید:
Permissions: Please check permissions on /wp-content/cache . Quick Cache needs write-access to this directory. Permissions need to be 755 or higher.
Permissions: Please check permissions on /wp-config.php . Quick Cache needs write-access to this file. Permissions need to be 755 or higher.
علت رخ دادن این خطا آن است که مالکیت پیشفرض فایلهای اپلیکیشن معمولن به کاربر bitnami و گروه daemon تعلق دارد، در نتیجه کاربران به عنوان کاربر bitnami میتوانند آنها را مستقیمن ویرایش کنند و وب سرور نیز قادر به خواندن آنهاست. در این مورد، زمانی که وب سرور نیاز به ویرایش هر فایل یا دایرکتوریای دارد، لازم است که به گروه نیز اجازهی نوشتن داده شود.
دستورات زیر را اجرا کنید:
sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/wp-content/cache
sudo find /opt/bitnami/apps/wordpress/htdocs/wp-content/cache -type f -exec chmod 664 {} \;
sudo find /opt/bitnami/apps/wordpress/htdocs/wp-content/cache -type d -exec chmod 775 {} \;
sudo chown bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/wp-config.php
sudo chmod g+w /opt/bitnami/apps/wordpress/htdocs/wp-config.php
Minify
این plugin از موتور Minify استفاده میکند تا فایلهای جاوا اسکریپت و CSS را فشرده کند و زمان بارگذاری صفحه را بهبود ببخشد. برای این کار چندین پلاگین وجود دارد: Minify، WP Minify یا Better WordPress Minify. شما میتوانید هرکدام از آنها را نصب کنید و در نتیجه زمان بارگذاری صفحهی وب خود را بهبود ببخشید. برای تمامی این افزونهها لازم است که وردپرس در آدرس root در حال کار باشد.