مدیریت ترافیک سایت‌ در وردپرس

نویسنده : سید ایوب کوکبی ۲۴ بهمن ۱۳۹۶

قبل از اینکه بخواهید تعداد بازدیدها و به تبع آن ترافیک سایت خود را افزایش دهید بایستی از آمادگی برخورد و مدیریت ترافیک سایت مطمئن شوید. قطعا وردپرس قادر به مدیریت ترافیک در حجم‌های بالا هست ولی همانند هر سیستمی اینجا نیز محدودیت‌هایی وجود دارد که بخش عمده‌ی آن به خود ما بر می‌گردد. وقتی هاست یا سرور خود را عوض می‌کنید؛ سیستم کش را تغییر می‌دهید و یا حجم صفحاتتان افزایش می‌یابد، پیش از دعوت کاربران به سایت بایستی از تحمل بار ترافیکی آن اطمینان حاصل کنید. شما که نمی‌خواهید کاربران جدید به دلیل ترافیک بالای سایت با خطا مواجه شوند!

محدودیت‌های سخت‌افزاری

وردپرس نیز همانند هر وب‌اپلیکیشنی، تا جایی قادر به مدیریت ترافیک سایت است که سخت‌افزار هاست یا سرور شما پشتیبانی کند.

سایتی که تحت ترافیک سنگین قرار گرفته غالبا به دو دلیل با مشکل مواجه می‌شود:

  1. محدودیت‌های پردازشی
  2. محدودیت‌های شبکه

محدودیت‌های پردازشی

سطوح بالای ترافیک باعث مصرف بیش از حد منابع سرور می‌شود. مطمئن شوید سرور شما از توان پردازشی مناسب و میزان کافی حافظه (RAM) برای مدیریت ترافیک سایت برخوردار است. در ادامه متن، نیازمندی‌های پیش‌فرض وردپرس ذکر شده است، البته هر سایتی بر اساس شرایطش ممکن است به منابع اضافی هم نیاز داشته باشد.

پایگاه داده

همانند بسیاری از برنامه‌های تحت‌وب و سیستم‌های وبلاگ‌دهی، وردپرس نیز جهت ذخیره و تولید محتوای خروجی نیازمند استفاده از یک پایگاه داده است. این پایگاه داده MySQL یا MariaDB است. وردپرس هر درخواستی که به این پایگاه داده می‌دهد (چه عمل خواندن و چه عمل نوشتن) از منابع سرور استفاده می‌کند. البته توسعه‌دهندگان وردپرس به صورت مداوم در حال بهینه‌سازی و کاهش حجم این درخواست‌ها هستند.

با این حال توسعه افزونه‌های وردپرس و پوسته‌ها می‌تواند حجم این درخواست‌ها و مصرف منابع سرور را افزایش دهد. با افزایش ترافیک سایت، درخواست‌های زیادی به صورت همزمان بر روی دیتابیس اجرا می‌شود که این کار به شدت بر روی منابع سرور فشار وارد می‌کند و در صورتی که سرور از پس مدیریت ترافیک سایت بر نیاید بازدیدکننده‌ها را با خطایی همچون Connection time out مواجه می‌کند.

حجم درخواست‌ها (یا به قول برنامه‌نویسها، ریکوئست‌های) MySQL/MariaDB را می‌توان با اعمال تنظیمات صحیح، بهبود بخشید یا می‌توان با افزایش پردازنده و رم سرور با این مشکل مقابله کرد. بعلاوه، استفاده از تکنیک کشینگ و ایندکس کردن درست داده‌ها می‌توان بهره‌وری دیتابیس را افزایش دهد. هر سایتی شرایطی دارد بنابراین هیچ راه‌حل یکسانی برای همه حالت‌ها وجود ندارد.

گزینه بعدی برای مدیریت ترافیک سایت های پربازدید، کپی دیتابیس در حالت فقط-خواندنی بر روی سروری مجزاست. در این حالت تمامی درخواست‌هایی که از سوی وردپرس روانه سایت می‌شود، دستورات ساده SELECT هستند و سایر درخواست‌های UPDATE و INSERT به صورت مجزا مدیریت می‌شود. این کار را می‌توانید به کمک افزونه رسمی تیم وردپرس تحت عنوان HyperDB انجام دهید.

وب‌سرویس

وردپرس بر روی هر پلتفرمی قابل اجراست. آپاچی و لینوکس مهمترین پلتفرم‌هایی هستند که اغلب سایت‌های وردپرسی بر روی آن اجرا شده‌اند. با این حال این سیستم مدیریت محتوا را می‌توان روی هر سروری که از PHP و MySQL یا MariaDB پشتیبانی می‌کند نصب و اجرا کرد. اطمینان حاصل کنید، هاستی که از آن خدمات می‌گیرید از آخرین نسخه سیستم‌عامل استفاده می‌کند تا محیط مناسبی برای اجرای وردپرس فراهم باشد.

روش انتخاب شده برای اجرای PHP – مفسر کدهای وردپرس – می‌تواند روی کارایی سرور شما تاثیر بگذارد. در مد CGI، سرور برای هر فایل PHP که بازدید کننده درخواست می‌کند یک نمونه مجزاء از PHP در حافظه ایجاد می‌کند. در مد ماژول (یا ISAPI)، هر درخواست PHP تنها توسط یک نمونه واحد مدیریت می‌شود.

در مورد چندنخی در آپاچی ۲ نیز باورهای اشتباه زیادی وجود دارد ولی در کل، کارایی آپاچی ۲ با mod_php بهترین و پایدارترین حالت ممکن را به ارمغان می‌آورد. هر یک از روش‌های بیان شده مزایا و معایبی دارند. کاری نداریم که چه روشی را برای سرور خود انتخاب می‌کنید ولی به خاطر داشته باشید که حجم ترافیک و تست سیستم را قبل از انتشار عمومی آن فراموش نکنید.

بخوانید  بارگذاری تصاویر به صورت Lazy Load در وردپرس

محدودیت‌های شبکه

یک اتصال اینترنتی ضعیف می‌تواند تعداد صفحاتی که سرور شما قادر به میزبانی آن است را کاهش دهد. هر یک از صفحات سایت (از جمله همین صفحه) یک فایل است (که البته نام و پسوند آن مخفی شده است) و وقتی شما آن را باز می‌کنید در واقع یک فایل را دانلود کرده‌اید. از سویی سروری که سایت شما را میزبانی می‌کند از طریق یک آداپتور اترنت به شبکه داخلی ISP متصل و شما را به اینترنت متصل می‌کند.

حداکثر سرعت این آداپتور ۱۰Mb/s, 100Mb/s, یا ۱Gb/s است. بنابراین سرور نمی‌تواند سریعتر از این سرعت‌ها با دنیا ارتباط برقرار کند. به همین دلیل است که بعضی سایت‌ها دیرتر باز می‌شوند. البته عوامل دیگری نیز در کاهش سرعت دخیل هستند. اولین نکته قابل توجه این است که اعداد بیان شده (بخصوص سرعت آداپتور شبکه سرور)، صرفا مقداری تئوری بوده و در عمل سرور قادر به رسیدن به بیشینه سرعت‌های فوق نیست.

این به این دلیل است که علاوه بر اطلاعات منتقل شده، سرور اطلاعات مربوط به مسیریابی را هم ارسال و دریافت می‌کند تا اطلاعات صفحه به بازدیدکننده نمایش داده شود. به دلیل سربار شبکه، تنها کسری از پهنای‌باند حداکثری سرور برای انتقال فایل‌ها در دسترس است. دومین نکته، اشتراک پهنای باند با دیگر مشترکان ISP است.

یک تامین کننده اینترنت فقط به سرور شما که خدمات نمی‌دهد؛ ISP در آن واحد بایستی چندین سرور مختلف را خدمات رسانی کند و این موضوع باعث اشتراک پهنای باند بین سرویس‌دهنده‌های دیگر می‌شود. برخی از تامین‌کنندگان شبکه، مقداری را به عنوان حداکثر حجم ترافیک برای بازه زمانی مشخصی در نظر می‌گیرند که به burst size مشهور است.

این قابلیت معمولا به درد سایت‌هایی می‌خورد که با ترافیک بالایی روبرو هستند و در دسترس بودن سایت نیز از اهمیت بالایی برخوردار است. این قابلیت توسط برخی تامین‌کننده‌های شبکه ارائه می‌شود و برخی کلا فاقد این ویژگی هستند. در هر حال برای کسب اطلاعات بیشتر با تامین‌کننده سرویس خود تماس بگیرید.

محاسبه سرعت انتقال داده

برای اینکه بفهمید چرا پهنای باند اتصال برای سایت‌هایی با ترافیک سنگین تا این حد اهمیت دارد، محاسبه ریاضی ساده‌ای را انجام می‌دهیم. فرض کنید سایت شما روزانه ۱۰۰ درخواست (hit) دریافت می‌کند. در این محاسبه فرض می‌کنیم هر درخواست معادل یک انتقال ساده داده است(مثلا باز کردن یک صفحه از سایت.) به طور میانگین ۱۰۰ هزار درخواست در روز معادل ۱٫۱۶ درخواست در هر ثانیه است. فرض می‌کنیم میانگین حجم هر درخواست ۱۶۰ کیلوبایت باشد (صفحه HTML, تصاویر، فایلهای دانلودی، CSS و …).

این یعنی سایت شما در هر ثانیه  ۱۹۰ کیلوبایت داده منتقل می‌کند (۱۶۰KB/hit * 1.16 hits/s). این مقدار معادل ۱٫۵ مگابیت در ثانیه است (به تفاوت مگابیت و کیلوبایت دقت کنید، بیشترین سرعت اینترنت با بیت/ثانیه نشان داده می‌شود و حجم فایل با بایت). بسیاری از سرویس‌دهنده‌ها معمولا نرخ انتقال اطلاعات را چنین سرعتی در نظر می‌گیرند، حالا برخی کمتر، برخی بیشتر ولی در کل همین حدود است. البته این سرعت برای بازدیدهای مجزا و در فواصل زمانی مناسب در نظر گرفته شده است.

معمولا، بیش از یک کاربر به صورت همزمان وب‌سایت شما را بازدید می‌کنند ولی در بازه‌های زمانی خاصی هم ممکن است هیچ بازدیدی نداشته باشید. در صورتی که ۱۰ نفر به صورت اتفاقی و همزمان در یک ثانیه سایت شما را باز کنند – که برای سایت‌های پربازدید دور از انتظار هم نیست – نیازمند یک اتصال ۱۵ مگابیت در ثانیه هستید.

اگر بیشینه سرعت آداپتور شبکه به صورت تئوری تنها ۱۰ مگابیت در ثانیه باشد از عهده مدیریت ترافیک سایت برنمی‌آید. بنابراین منشاء مشکل اینجا شبکه است و نه وردپرس. یک اتصال ۱۰۰ مگابیت در ثانیه قادر است تا ۷۰ اتصال همزمان را با نرخ ثابتِ دانلود، مدیریت کند؛ اما اغلب هاست‌های اشتراکی اجازه نمی‌دهند از حداکثر پهنای باند آن‌ها استفاده کنید مگر پلنی را برای تضمین پهنای باند مورد نیاز خریداری کرده باشید.

انتقال بیش از حد داده

میزبانی فایل‌های حجیم مثل ویدئو، پادکست و یا تصاویر می‌تواند آستانه مصرفی شما را به خط قرمز نزدیک کند. پلن‌های میزبانی حداکثر ترافیک را در بازه زمانی مشخصی ذکر کرده‌اند. بعد از گذر از این مقدار باید حساب خود را شارژ کنید که بسته به هاست شما برای هر مگابایت ۱ دلار آب می‌خورد. با در نظر گرفتن این نرخ، دانلود یک فایل ۲۰ مگابایتی می‌تواند ۲۰دلار هزینه اضافه برای میزبانی به دنبال داشته باشد.

بخوانید  اضافه کردن گوگل اسلاید به وردپرس

معمولا ترافیک بیشتر، هزینه بیشتری به دنبال دارد. با این حال بعضی از هاستینگ‌ها، ترافیک نامحدود می‌دهند که قیمت پایین‌تری نسبت به شارژ حساب به هنگام تمام شدن حجم ترافیک دارد. یکی از مشهورترین روش‌ها برای افزایش کارایی سایت استفاده از شبکه تحویل محتوا (CDN) است. برخی از سرویس‌های میزبانی برای جلوگیری از اتمام زودرس ترافیک سایت از این تکنیک استفاده می‌کنند. این کار باعث افزایش سرعت لود شدن سایت نیز می‌شود.

 راهکارهایی برای مدیریت ترافیک سایت

وردپرس تنها وقتی کارایی خوبی از خود به نمایش می‌گذارد که در شرایط مناسبی پیاده‌سازی و  اجرا شود. در ادامه با راه‌حل‌هایی جهت مدیریت ترافیک سایت در شرایط بحرانی آشنا خواهید شد.

معماری سرویس‌گرا

اگر در حال کسب آمادگی برای مدیریت ترافیک سایت پربازدیدی هستید، بهتر است وردپرس را تا حد امکان به لایه‌های مختلفی تقسیم کرده و هر لایه را به صورت مجزا مدیریت کنید. یعنی به جای اینکه وب‌سرور و پایگاه داده MySQL/MariaDB را بر روی یک سرور مدیریت کنید، آن‌ را بر روی چندین لایه مستقل مدیریت کرده تا سرعت و انعطاف‌پذیری بیشتری حاصل شود. مثلا پیکربندی زیر را ببینید:

  • آپاچی۲/nginx – به منظور مدیریت و رندر صفحات سایت و پنل ادمین
  • سرور MySQL/MariaDB برای مدیریت پایگاه داده (به حالت Master/Slave یا جداسازی نسخه خواندنی و نوشتنی دیتابیس)
  • لایه پراکسی وارنیش / nginx به منظور مدیریت درخواست‌ها از سوی کاربر
  • سرور CDN یا تصاویر برای نگهداری فایل‌های رسانه‌ای مورد استفاده در سایت

در این معماری نه‌تنها سایت قادر به تحمل ترافیک بیشتری بوده بلکه تنگناها و قسمت‌های مشکل‌زا نیز با سرعت بیشتری شناسایی می‌شوند. شاید حجم درخواست‌های دیتابیس بالا رفته و کارایی پایین آمده، شاید آپاچی۲ به پردازنده بیشتری نیاز دارد و بسیاری از احتمالات دیگر. در یک طراحی صحیح، اندازه این لایه‌ها بر اساس ترافیک سایت تنظیم می‌شود.

افزونه W3 Total Cache

W3 Total Cache یا به اختصار W3TC یکی از بهترین افزونه‌های وردپرس به منظور افزایش راندمان و بهبود تجربه کاربری بازدیدکنندگان سایت است. W3TC هم در بهینه‌سازی سمت سرور و هم کلاینت سایت، قابلیت‌های متعددی معرفی کرده است تا آنجا که در بین اهالی وردپرس به حرفه‌ای‌ترین ابزار کشینگ و بهینه‌سازی سایت معروف است. تعدادی از قابلیت‌های مهم این افزونه:

  • کشینگ صفحات: این افزونه با ساخت یک نسخه استاتیک از صفحات سایت، فرخوانی کدهای PHP را به حداقل رسانده و بدین صورت باعث کاهش چشمگیر مدت زمان پاسخگویی وب‌سرور خواهد شد. هنگام اضافه شدن محتوای جدید مثلا اضافه شدن کامنت جدید، W3TC به صورت خودکار نسخه قبلی کش را بروزسانی می‌کند.
  • فشرده‌سازی: این افزونه قبل از بروزسانی کش، کارکترهای اضافی را از فایل‌های CSS, HTML و جاوا اسکریپت حذف می‌کند.
  • کشینگ دیتابیس: کوئری‌های دیتابیس (اشیاء) نیز کش می‌شوند. این کار مدت زمان ساخت صفحات جدید را کاهش می‌دهد. این قابلیت بخصوص برای سایتهایی که کامنت‌های زیادی دارند مفید و اثربخش است.
  • هیدرها: W3TC با مدیریت هیدرها، وضعیت کش شدن صفحات توسط مرورگر را کنترل می‌کند؛ بار سرور را کاهش می‌دهد و تاثیر خوبی روی لود شدن صفحات دارد.
  • شبکه تحویل محتوا (CDN): استفاده از CDN باعث می‌شود تا محتوای سایت از جمله تصاویر، css، جاوا اسکریپت و غیره از نزدیک‌ترین و بهترین سرور به بازدیدکننده درخواست شود. این کار سرعت دانلود صفحات و فایلهای سایت را به صورت چشمگیری افزایش می‌دهد و تاثیر آن برای کاربران نیز محسوس است.

W3TC علاوه بر کارایی خوب بر روی سرورهای اشتراکی، توانایی بهینه‌سازی وردپرس در محیط‌های تک سروره و چند سروره را نیز داراست. استفاده صحیح از W3 Total Cache مدیریت ترافیک وردپرس را سهولت می‌بخشد.

WP Super Cache

این افزونه نیز رقیب سرسخت W3TC است و با همان تکنیک قبلی، نسخه‌ای استاتیک از صفحات سایت ایجاد کرده تا سرعت باز شدن صفحات افزایش پیدا کند. این افزونه بدون پردازش‌ اسکریپت‌های سنگین PHP فایل‌های HTML فشرده‌ای را تولید می‌کند که تاثیر محسوسی در افزایش سرعت وبلاگ وردپرسی شما دارد.

بخوانید  18 نکته برای افزایش سرعت سایت وردپرسی

WP Super Cache نسخه تغییریافته WP Cache است. WP Cache بدون دسترسی به دیتابیس قادر به کش کردن صفحات سایت است. با این حال استفاده از WP Cache دیگر توصیه نمی‌شود چرا که این افزونه برای دریافت نسخه کش صفحات نیازمند به کار گیری انجین PHP است. اما WP Super Cache این مشکل را به خوبی حل کرده طوری که بدون فرخوانی حتی یک خط PHP قادر به انجام این کار است.

استفاده از این افزونه به سرور شما اجازه می‌دهد تا صفحات کش شده HTML را دقیقا با همان سرعت فایل‌های گرافیکی در نظر بگیرد. اگر سایت شما روزانه با تعداد زیادی بازدیدکننده سروکله می‌رند از Wp Super Cache استفاده کنید تا شاهد تغییرات چشمگیر آن باشید. سایت‌های بزرگی مثل Digg.com و Slashdot.org بی‌جهت از این افزونه استفاده نمی‌کنند.

افزونه‌ها و رسانه‌های غیرضروری وردپرس را حذف یا محدود کنید

با زیاد شدن حجم کدها، افزونه‌ها و المان‌های سایت، تاثیر ترافیک بالا را بر روی کاهش عملکرد سایت به خوبی درک خواهید کرد. به عنوان مثال، فرض کنید صفحه اول سایت یا وبلاگ شما از پوسته‌ای استفاده می‌کند که ۸ تصویر در آن به کار رفته که حداقل ۴ تای آن مربوط به سربرگ، فوتر، سایدبار و بخش محتوای اصلی سایت است. این‌ها باعث افزایش تعداد فراخوانی‌های سایت می‌شود. برای ۱۰۰ بازدیدکننده فرضی این فایل‌ها ۱۲۰۰ بار فرخوانی می‌شوند. برای ۱۰۰۰ نفر این تعداد به ۱۲۰۰۰ بار می‌رسد. این موضوع باعث افزایش مصرف پهنای باند و همچنین افزایش فعالیت سرور خواهد شد.

جدایی از بخش‌های اصلی سایت، افزونه‌های فرخوانی شده توسط پوسته سایت نیز به این تعداد افزوده می‌شوند. این افزونه‌ها معمولا کوئری‌هایی به دیتابیس ارسال کرده و محتوای مورد نیاز صفحات را تولید می‌کنند. با افزایش تعداد افزونه‌های وردپرس، تعداد این کوئری‌ها افزایش یافته و مدیریت ترافیک سایت در شرایطی که حجم بازدیدها زیاد باشد با مشکل روبرو می‌شود.

در شرایطی که به صورت مقطعی حجم بازدیدها به شدت افزایش یافته و مدیریت ترافیک سایت از دست شما خارج می‌شود، بد نیست با انجام این کارها، تعداد درخواست‌ها و دسترسی به فایل‌ها را در آن مقطع کاهش دهید:

  1. تعداد فایل‌های گرافیکی به کار رفته در قالب سایت را کاهش داده و یا لااقل با بهینه‌سازی، حجم آن‌ها را کم کنید. این کار را می‌توانید با ویرایش استایل‌شیت و فایل‌های مربوط به قالب انجام دهید.
  2. به صورت موقت تعدادی از افزونه‌های کمتر ضروری وردپرس را غیرفعال کنید. به بخش افزونه‌ها مراجعه کنید و آن‌هایی که بدون حضورشان اتفاق خاصی نمی‌افتد را غیرفعال و ترجیحا حذف نمایید.

در کل، میزان دسترسی به فایل‌ها و دیتابیس را به حداقل ممکن برسانید. بعد از فروکش کردن ترافیک بالا می‌توانید مجددا افزونه‌های غیرفعال شده را فعال نمایید. این تکنیک در بسیاری از اوقات به خوبی جواب می‌دهد.

استفاده از یک هاست جدید

این مورد آخری را اگرچه دوست نداریم بگوییم ولی واقعیتی انکار ناشدنی است. گاهی مواقع، مشکل از میزبان شماست. شما هرچقدر هم سایت سبک و بهینه‌شده‌ای داشته باشید اگر بر روی هاست ضعیفی میزبانی شود با عملکرد بدی مواجه خواهید شد. در این شرایط با عوض کردن هاست و استفاده از یک هاست قوی‌تر (و یا استفاده از پلن‌های بهتر) مشکل برطرف می‌شود. در شرایطی که با مشکل مدیریت ترافیک سایت روبرو شده‌اید و مشکل را در میزبان خود می‌بینید از راهکارهای پایین استفاده کنید:

  • اگر هاست اشتراکی استفاده می‌کنید: از یک سرور مجازی یا VPS استفاده کنید.
  • اگر هاست مجازی دارید: به یک هاست اختصاصی سوئیچ کنید.
  • اگر هاست شما اختصاصی است: از یک هاست اختصاصی قوی‌تر استفاده کنید. (مثلا میزان پردازنده و رم را بیشتر کنید.)
  • اگر هاست اختصاصی سطح بالایی دارید: با سرویس‌دهنده در مورد ارتقاء سرور و یا استفاده از چندین سرور به صورت همزمان صحبت کنید.

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *