كيف الحال ,
من أشهر كتبت موضوع عن مدى كرهي الشديد لثقيل الدم Apache , و عرضت عليكم Nginx كبديل متفوق , مع هذا Nginx ليس كل شيء في السيرفر , هناك ملحقات اساسية لتشغيل أي موقع وهي PHP و MySQL .
المهم أي شخص عنده خبرة بسيطة في لغات البرمجة الاخرى , يعرف ان PHP ادائها من ناحية سرعة التنفيد ليس مثال , ان لم نقل انها بطيئة مقارن بالغات المترجمة مثل ++C و ASP.net , و أي شخص عنده موقع مزدحم بالزوار يدرك هذا الشي .
وردبريس على سبيل المثال تحوي على اضافات للكاش ( غالبيتهم بهم مشاكل عدة ) , و لن يعطوك الاداء الذي ممكن ان تصل بيه عبر تفعل الكاش مباشرة على nginx .
قبل كتابة الاكواد , اود التوضيح ان اغلب الشروحات في الانترنت تغفل جانب مهم عند تفعيل الكاش و هي الاختلاف بين نسخة الجوال Mobile الموبايل و نسخة سطح المكتب Desktop ,هذا الجانب تمت تغطيته هنا .
ضيف هذا الكود تحت بلوك http { بملف nginx.conf تجده بالمسار /etc/nginx/nginx.conf
map $http_user_agent $mobile_request {
default fullversion;
"~*ipad" mobileversion;
"~*android.*mobile" mobileversion;
"~*iphone" mobileversion;
"~*ipod.*mobile" mobileversion;
"~*BlackBerry*Mobile Safari" mobileversion;
"~*BB*Mobile Safari" mobileversion;
"~*Opera.*Mini/7" mobileversion;
"~*IEMobile/10.*Touch" mobileversion;
"~*IEMobile/11.*Touch" mobileversion;
"~*IEMobile/7.0" mobileversion;
"~*IEMobile/9.0" mobileversion;
"~*Firefox.*Mobile" mobileversion;
"~*webOS" mobileversion;
"~*android|ip(hone|od)|windows\s+(?:ce|phone)" mobileversion;
"~*symbian|sonyericsson|samsung|lg|blackberry" mobileversion;
"~*mobile" mobileversion;
}
fastcgi_cache_path /var/www/cache/example levels=1:2 keys_zone=microcache:90m max_size=60m inactive=1h;
fastcgi_cache_key $scheme$request_method$host$request_uri$mobile_request;
يجب ان تكوم بانشاء المسار /var/www/cache/example
ليخزن به إنجين إكس ملفات الكاش المؤقتة
اكتب هذه الاكواد داخل البوك الخاص بموقعك تحت server {
set $no_cache 0;
if ($request_method != GET){ set $no_cache 1;}
if ($query_string != ""){ set $no_cache 1;}
if ($request_uri ~* "/(wp-login.php|wp-admin|login.php|backend|admin)") {set $no_cache 1; }
if ($http_cookie ~* "PHPSESSID") { set $no_cache 1;}
if ($http_cookie ~* "wordpress_logged_in_") { set $no_cache 1 ; }
الجزء المهم هنا هو تفعيل الكاش على كل طلبات php-fpm من خلال البلوك الخاص ب php ضيف المعاملات الخاصة بالكاش فقط ابقي على اي معاملات خاصة بك
location ~ \.php$ {
root /var/www/example;
add_header X-Cache $upstream_cache_status;
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;
fastcgi_cache_key $scheme$request_method$host$request_uri$mobile_request;
fastcgi_cache microcache;
fastcgi_cache_valid 200 301 302 30s;
fastcgi_cache_use_stale updating error timeout invalid_header http_500;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
add_header X-UA-Detect $mobile_request;
}
عدل php7.4-fpm باصدار ال php الخاص بك مثلا php5.6-fpm إلخ
أخيرا و للحصول على سرعة اكبر سنقوم بتحميل مجلد الكاش على الرام مباشرة ,
mount -t tmpfs -o size=100M,mode=0755 tmpfs /var/www/cache
حتى يتفعل مجلد الكاش مع كل اعادة تشغيل للسيرف ضيف هذه الاسطر لملف /etc/fstab
nano -w /etc/fstab
tmpfs /var/www/cache tmpfs defaults,size=100M 0 0
لاي استفسار انا جاهز .
from حسوب I/O - الأكثر شيوعاً https://ift.tt/2NatEUe
ليست هناك تعليقات:
إرسال تعليق
دائماً، رأيكم يهمنا،