تسريع الموقع عبر إنجن إكس

تسريع الموقع عبر إنجن إكس

يفيد كاش Nginx السيرفيرات في زيادة تحملها للعدد الكبير من الطلبات في وقت واحد، هذه الطلبات الكثيرة ستُأثر بشكل بسيط جدا على موارد السير فير (خصوصا المعالج). حيث عملية التخزين المؤقت (الكاش) يتم للصفحات الديبناميك, ولا يجب ان نخلط بينها  إختلاط بين كاش المتصفح (للزائر) و كاش السيرفر (اللي هو Nginx ) .
ما يميز Nginx هو سرعته الرهيبة في إرسال الملفات التابثة statics مثل الصور و الستايل و ملفات جافاسكربت, فالصفحة الديناميكية التي تعرضها php او حتى node.js يطلبها انجنكس من مفسرات هذه اللغات مثل php-fpm .
عيب هذه اللغات هو قدرتها الضعيفة في تحمل الطلبات المتعددة في نفس الوقت (في الواقع هي ابطاء من nginx ب 20 مرة من تجارب قمت بها )

لو مهتم بكاش كلاودفلار بدلا من ذلك شاهد المقال>> كاش كلاود فلير.

يعرف ان PHP ادائها من ناحية سرعة التنفيد ليس مثال , ان لم نقل انها بطيئة مقارن بالغات المترجمة مثل ++C و ASP.net , و أي شخص عنده موقع مزدحم بالزوار يدرك هذا الشي .

وردبريس على سبيل المثال تحوي على اضافات للكاش ( غالبيتهم بهم مشاكل عدة ) , و لن يعطوك الاداء الذي ممكن ان تصل بيه عبر تفعل الكاش مباشرة على nginx .

ضيف هذا الكود تحت بلوك 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


كتابة Mostafa Suleiman

مصطفى سليمان خريج تقنية معلومات أكتب في المجال التقني من 10 سنوات تقريباً، هوايتي القرائة ومتابعة الاخبار عامة والاخبار التقنية خاصة