وقتی که شما بخواهید وبسایت خود را از نظر سرعت و کیفیت بهینهسازی کنید، همیشه گزینههای مختلف خواهید داشت که میتوانید از آنها استفاده کنید. معمولا کارهایی مانند کش کردن صفحات، بهینهسازی تصاویر، بررسی قالب و استانداردسازی اسکریپتها و کدهای CSS جزو اقداماتی است که در ابتدای راه انجام میشود. اما اقدامات مهمتری است که سرعت سایت شما را به شدت بالاتر برده و به احتمال زیاد از هزینههای سایت شما نیز میکاهد. بررسی وبسرور و تیونینگ آن است که کیفیت بالا آمدن سایت شما و تجربه کاربری را بهتر میکند. یکی از وبسرورهایی که این قابلیت را بهخوبی در اختیار شما میگذارد، لایت اسپید است. که در ادامه با تنظیمات تیونینگ لایت اسپید بیشتر آشنا خواهیم شد.
فهرست محتوا
منظور از تیونینگ لایت اسپید چیست؟
در این مقاله هدف آشنایی با تنظیمات تیونینگ لایت اسپید است که در این بخش پارامترهای مربوط به Tuning توضیح داده میشود. در بخش Configuration کنسول ادمین LiteSpeed قسمت Tuning مربوط به یکسری از تنظیمات اصلی وبسرور جهت افزایش سرعت لود وبسایت هستند که در ادامه براساس LiteSpeed Tuning Configuration و با جزئیات توضیح داده خواهند شد. همانطور که در مقاله آشنایی با وب سرور لایت اسپید توضیح داده شد با اعمال تنظیمات صحیح تیونینگ لایت اسپید، سرعت لود وبسایت بهصورت چشمگیری افزایش پیدا خواهد کرد.
دسترسی به تنظیمات تیونینگ لایت اسپید
برای اینکه به تنظیمات مربوط به تیونینگ لایت اسپید دسترسی داشته باشید باید در صفحه اولیه پنل ادمین روی Configuration کلیک نمایید سپس وارد سربرگ Tuning شوید. برای این کار طبق تصویر مراحل زیر انجام دهید.
پارامترهایی که در سربرگ تیونینگ لایت اسپید تنظیم میشوند و ما در ادامه آنها را توضیح خواهیم داد به هفت دسته کلی تقسیم میشوند:
- بهبود عملکرد سیستم عامل (OS Optimization)
- ارتباطات (Connection)
- درخواستها و پاسخها (Request/Response)
- بهینهسازی تحویل فایلهای استاتیک (Static File Delivery Optimization)
- فشردهسازی دو نوع GZIP و Brotli
- تنظیمات کلی SSL
- QUIC
لازم به ذکر است برای تغییر هر پارامتر روی دکمهی Edit در روبهروی دستهبندی کلیک نمایید.
پارامترهای بهبود عملکرد سیستم عامل در تیونینگ لایت اسپید
بخش OS Optimization از Tuning لایت اسپید مربوط به تنظیمات با لایه سیستم عامل است که با وبسرور لایت اسپید در ارتباط هستند.
RAM Disk Path: تنظیم کردن این پارامتر تیونینگ لایت اسپید به شما اجازه میدهد تا محل قرارگیری دیسک RAM را مشخص کنید. یک سروری که رَم اضافی و بیکار دارد میتواند مدت زمان خواندن از دیسک (HDD) را با خواندن اطلاعات از رم دیسک کاهش دهد.
شاید برای شما سوال پیش بیاید که رم دیسک چیست؟ RAM Disk یا رم درایو (RAM Drive) یک فناوری قدیمی است که بهصورت یک درایو مانند همه درایوهای دیگر در کامپیوتر اجازه میدهد که بخشی از حجم حافظه تصادفی یا همان رَم را به یک فضای ذخیرهسازی مستقل تبدیل کنیم بهطوری بتوان فایل، برنامهها و… را روی آن ذخیره و به حالت عادی از آنها استفاده نمود اما مهمترین ویژگی این فناوری این است که چندین برابر از هارد دیسک سریعتر است یعنی اگر نرمافزاری را داخل این درایو نصب کنید فرایند اجرای آن بهمراتب کمتر از اجرای آن از روی هارد HDD و SSD است. وبسرور لایت اسپید LSWS برای بهبود عملکرد خود به شما اجازه میدهد که از این امکان در تیونینگ لایت اسپید استفاده کنید.
رم دیسک ابتدا باید در تنظیمات سطح OS یا همان سیستم عامل انجام شود تا وبسرور بتواند از آن استفاده کند. معمولاً توزیعهای مختلف لینوکس از /dev/shm بهعنوان مسیر رم دیسک استفاده میکنند اما بهصورت کلی به سیستم عامل بستگی دارد.
Default SHM Directory: با تنظیم این پارامتر تیونینگ لایت اسپید دایرکتوری پیشفرض مموری اشتراکی (shared memory) تغییر میکند و اگر این مسیر موجود نباشد، ایجاد خواهد شد. همه دادههای SHM در این دایرکتوری ذخیره میشوند مگر اینکه مسیر دیگری مشخص شود.
Reverse DNS Lookup: این پارامتر از تیونینگ لایت اسپید یک جستجویی مبتنی بر IP -> Domain Name را برای هر یوزر انجام میدهد که میتواند برای دسترسی لاگینها بررسی شود و بهصورت پیشفرض نیز غیرفعال است.
پارامترهای ارتباطات
بخش Connection از تیونینگ لایت اسپید مربوط به تنظیمات اتصالاتی است که سرور قبول میکند با تنظیم صحیح پارامترهای این بخش، میزان connectionهای کمتری از دست بدهید و بهرهوری کلی سرور افزایش یابد همچنین ریسک حملات DOS و DDOS کاهش پیدا میکند.
Max Connections: این پارامتر تیونینگ لایت اسپید از نوع integer است و حداکثر تعداد اتصالات یا Connectionهایی که سرور میتواند قبول کند را مشخص میکند. این مقدار مربوط به هر دو نوع اتصالات TCP ساده و SSL است. این عدد بهتر است که از حد سختافزاری یا hard limitی که توسط server software edition یا لایسنس تعریف میشود، تجاوز نکند. این عدد برای انواع لایسنس به این شرح است: ۵۰۰ برای لایسنس VPS و ۸۰۰ برای Ultra VPS. زمانی که تعداد اتصالات همزمان (concurrent connections) به مقدار ماکسیمم تعریف شده رسید، سرور اتصالات زنده نگه داشته شده (Keep-Alive connections) را به محض تمام شدن درخواستشان میبندد.
نکته زمانی که سرور با یوزر root شروع به کار میکند، تلاش میکند تا محدودیتها را بر اساس مقدار تعریف شده برای هر پروسه بهصورت اتوماتیک تعریف کند که اگر با خطا مواجه شود ممکن است نیاز باشد مقدار این محدودیت را بهصورت دستی افزایش دهید.
Max SSL Connections: این پارامتر تیونینگ لایت اسپید از نوع integer است و حداکثر تعداد اتصالات از نوع SSL یا SSL Connectionهایی که سرور میتواند قبول کند را مشخص میکند. مجموع اتصالات SSL و non-SSL نباید از مقدار Max Connections تجاوز کند بنابراین باید مقدار واقعی Max SSL Connections مجاز کمتر از Max Connections باشد.
Connection Timeout (secs): این پارامتر نیز از نوع integer است و ماکسیمم مدت زمان بیکاری یک اتصال در طول پردازش یک درخواست را مشخص میکند. اگر در طول این زمان درخواست بیکار باشد مثلاً هیچ فعالیت ورودی یا خروجی (I/O activity) نداشته باشد، اتصال بسته میشود.
نکته: اگر این پارامتر به مقدار کمی تنظیم شود، باعث میشود که در طول حملات DoS اتصالات زیادی که سمت سرور هستند سریع بسته شوند.
Max Keep-Alive Requests: این پارامتر تیونینگ لایت اسپید هم یک عدد از نوع integer است و ماکسیمم تعداد درخواستهایی را مشخص میکند که در طول یک جلسه پایدار و فعال (persistent session) از سمت سرور پذیرفته و پردازش میشود. بعد از رسیدن به این عدد، سرور تمامی اتصالات را میبندد.
Keep-Alive چیست؟ با استفاده از Keep-Alive یک پل ارتباطی بین وبسرور و مرورگر ایجاد میشود بنابراین برای هر درخواست نیاز به یک اتصال جدید نیست و از طریق یک اتصال چند فایل ردوبدل میشود.
نکته: بهتر است این پارامتر تا حد قابلقبولی بالا باشد. مقادیر «۱» و «۰» حالت keep-alive را غیرفعال میکنند.
Keep-Alive Timeout (secs): این پارامتر از نوع integer است و ماکسیمم زمان بیکاری بین درخواستهای یک اتصالی که در حالت فعال است (keep-alive) را مشخص میکند. منظور این است زمانیکه یک اتصال بین وبسرور و مرورگر برقرا میشود اگر در این مدت تعیینشده هیچ درخواستی ارسال نشود، کل اتصال بسته میشود و برای درخواستهای بعدی باید اتصال جدیدی برقرار شود. این تنظیمات فقط برای اتصالات HTTP/1.1 کار میکند. اتصالات HTTP/2 دارای keep-alive timeoutهای طولانیتری هستند و تحت تاثیر این تنظیمات نیستند.
Send Buffer Size (bytes): این پارامتر از نوع integer است و سایز بافر ارسالی برای هر سوکت TCP را مشخص میکند. ماکسیمم مقدار مجاز 512K است.
نکته: بهتر است این پارامتر به حالت «Not Set» یا «۰» تنظیم شود تا از مقادیر پیشفرضی که توسط سیستم عامل تعیین میشود، تبعیت کند. همینطور اگر وبسایتتان فایلهایی با سایز بزرگ ارسال میکند بهتر است سایز بار ارسالی برای بهبود عملکرد افزایش داده شود. نکته دیگری که وجود دارد و لازم است که به آن توجه داشته باشید، کاهش این پارامتر توان عملیاتی و مموری مصرفی را کاهش میدهد.
Receive Buffer Size (bytes): این پارامتر از نوع integer است و سایز بافر دریافتی برای هر سوکت TCP را مشخص میکند. ماکسیمم مقدار مجاز 512K است.
نکته: بهتر است این پارامتر به حالت «Not Set» یا «۰» تنظیم شود تا از مقادیر پیشفرضی که توسط سیستم عامل تعیین میشود، تبعیت کند. همینطور اگر سایز بافر دریافتی زیاد باشد هنگام پردازش درخواستهای ورودی با payload بزرگ موجب افزایش عملکرد میشود و کاهش این پارامتر توان عملیاتی و مموری مصرفی را کاهش میدهد.
پارامترهای مربوط به درخواستها و پاسخها در تیونینگ لایت اسپید
بخش Request/Response از تیونینگ لایت اسپید مربوط به درخواستهایی که کاربران به سمت وبسایت ارسال میکنند و همچنین پاسخهایی که دریافت میکنند، میباشد.
Max Request URL Length (bytes): این پارامتر تیونینگ لایت اسپید از نوع integer است و ماکسیمم طول مجاز URL است. URL یک آدرس متنی است که برای دسترسی به وبسایت استفاده میشود. محدودیت سخت افزاری ۶۵۵۳۰ بایت است، اگر این پارامتر به مقداری بزرگتر مانند 64K تنظیم شود زمانی استفاده میشود که ۶۵۵۳۰ پر شود. مقدار پیشفرض این پارامتر ۸۱۹۲ یا 8K است.
Max Request Header Size (bytes): این پارامتر از نوع integer است و ماکسیمم سایز هدر HTTP یک URL درخواستی را مشخص میکند. محدودیت سختافزاری این پارامتر ۶۵۵۳۰ بایت است و برای مقادیر بزرگتر از این عدد اگر کل مقدار ۶۵۵۳۰ پر شود، مورد استفاده قرار میگیرند.
نکته: برای کاهش مموری مصرفی، رفع باگهای احتمالی و تشخیص DoS، تا حد امکان این پارامتر را در تیونینگ لایت اسپید کوچک نگاه دارید. در حالت عادی مقدار 4-8K برای بیشتر وبسایتها مناسب است.
Max Request Body Size (bytes): این پارامتر تیونینگ لایت اسپید ماکسیمم سایز مربوط به body یک درخواست HTTP را مشخص میکند. حداکثر مقدار آن برای سیستم عاملهای 32Bit عدد 2GB و برای سیستم عاملهای ۶۴ بیتی این عدد بهصورت مجازی نامحدود است.
نکته: برای کمک به جلوگیری از حملات DoS، در تیونینگ لایت اسپید این پارامتر را به مقدار واقعی مورد نیازتان محدود کنید. فضای swap شما نیز باید فضای کافی برای تأمین این حد را داشته باشد.
Max Dynamic Response Header Size (bytes): این پارامتر از نوع integer است و ماکسیمم سایز هدر پاسخهایی که بهصورت داینامیک ایجاد میشوند را مشخص میکند. محدودیت سختافزاری این پارامتر ۶۵۵۳۰ بایت است و برای مقادیر بزرگتر از این مقدار اگر عدد ۶۵۵۳۰ کاملاً استفاده شود، آن مقدار مورد استفاده قرار میگیرد. مقدار پیشفرض برای این پارامتر در تیونینگ لایت اسپید برابر با ۳۲۷۶۸ یا 32K در نظر گرفته میشود.
نکته: برای تشخیص پاسخهای داینامیک بد تولید شده توسط اپلیکیشنهای خارجی، این پارامتر را به مقدار منطقی پایینی تنظیم نمایید.
Max Dynamic Response Body Size (bytes): این پارامتر از نوع integer است و ماکسیمم سایز بدنه یا body پاسخهایی که بهصورت داینامیک ایجاد میشوند را مشخص میکند. حداکثر حد مجاز برای این پارامتر 2047MB است.
پارامترهای بهینهسازی تحویل فایلهای استاتیک در تیونینگ لایت اسپید
بخش Static File Delivery Optimization از تیونینگ لایت اسپید مربوط به بهینهسازی فایلهای ثابتی است که در طی درخواستها و پاسخها برای کاربران وبسایت ارسال میشوند. تنظیمات این پارامترها بهویژه زمانی که حجم فایلها زیاد باشد بسیار حائز اهمیت است.
Max Cached Small File Size (bytes): این پارامتر از نوع integer است و سایز بزرگترین فایلی که میتواند در مموری کَش شود را مشخص میکند. بهصورت کلی فایلهای استاتیک به ۴ صورت خوانده میشوند: memory buffer cache ،memory-mapped cache ،plain read/write و sendfile();.
فایلهایی که سایز آنها از این مقدار کمتر است از memory buffer cache خوانده میشوند، فایلهایی که سایز آنها از این مقدار بیشتر است اما از Max MMAP File Size (bytes) (در ادامه تیونینگ لایت اسپید این پارامتر را توضیح خواهیم داد) کمتر است memory-mapped cache خوانده میشوند و فایلهایی که سایز آنها بیشتر از Max MMAP File Size (bytes) است توسط plain read/write یا sendfile(); خوانده میشوند. بهینهترین حالت نگهداری فایلهای استاتیک با سایز کمتر از 4K در memory buffer cache است.
نکته: در واقع memory-mapped cache بخشی از مموری مجازی است که بهصورت بیتبهبیت به یک فایل نسبتاً بزرگ اختصاص داده میشود. در واقع نگاشتی از فایل در مموری قرار میگیرد که باعث افزایش کارایی ورودی/خروجی خصوصاً روی فایلهای بزرگ است.
Total Small File Cache Size (bytes): این پارامتر تیونینگ لایت اسپید از نوع integer است و مشخصکننده مقدار کل مموری است که میتوان به کشِ بافر برای نگهداری یا کَش فایلهای استاتیک کوچک تخصیص داد.
Max MMAP File Size (bytes): این پارامتر تیونینگ لایت اسپید از نوع integer است و مشخصکننده بزرگترین فایلی است که میتواند در مموری map نگاشت شود. فایلهای استاتیک در ۴ قسمت نگهداری میشوند: memory buffer cache ،memory-mapped cache ،plain read/write و sendfile();.
فایلهایی که سایز آنها کمتر از Max Cached Small File Size باشد از memory buffer cache خوانده میشود . فایلهایی که سایز آنها بیشتر از Max Cached Small File Size باشد اما از Max MMAP File Size کمتر باشد از memory-mapped cache خوانده میشوند و فایلهایی که سایز آنها بیشتر از Max MMAP File Size (bytes) است توسط plain read/write یا ;()sendfile خوانده میشوند. از آنجا که سرور فضای آدرس ۳۲ بیتی دارد (۲ گیگ) پیشنهاد میشود این پارامتر خیلی بزرگ نباشد.
Total MMAP Cache Size: این پارامتر تیونینگ لایت اسپید از نوع integer است و مقدار نهایی و کلی که میتوان برای memory- mapped cache برای کش کردن یا خواندن فایلهای استاتیک با حجم متوسط استفاده شود را مشخص میکند.
use sendfile();: این پارامتر تیونینگ لایت اسپید از نوع radio box انتخابی است و مشخص میکند در چه وضعیتی از سیستم فراخوانی ()sendfile برای فایلهای استاتیک استفاده شود. همانطور که قبلاً توضیح داده شد فایلهای استاتیک به چهار روش پردازش میشوند: memory buffer cache ،memory-mapped cache ،plain read/write و sendfile();. فایلهای کوچکتر از Max Cached Small File Size از memory buffer cache پردازش میشوند.
فایلهای بزرگتر از Max Cached Small File Size اما کوچکتر از Max MMAP File Size از memory-mapped cache پردازش میشوند. فایلهای بزرگتر از Max MMAP File Size بهصورت read/write ساده یا توسط sendfile(); استفاده میشوند. sendfile(); یک سیستم فراخوانی «zero copy» است که بهرهوری CPU را موقع خواندن فایلهای بزرگ به شدت کاهش میدهد. sendfile(); به یک درایور کارت شبکه با هسته بهینه شده نیاز دارد و به همین جهت برای آداپتورهای شبکه سایز کوچک مناسب نمیباشد.
Use AIO: این پارامتر تیونینگ لایت اسپید حالت انتخابی از لیست کشویی دارد. AIO مخفف asynchronous I/O است، در واقع نوعی از پردازش ورودی/خروجی است که اجازه میدهد تا پردازش دیگر که به I/O وابسته هستند قبل از پایان انتقال فعلی ادامه یابد. در واقع با فعال کردن این پارامتر امکان استفاده از AIO برای فایلهای استاتیک فراهم میشود. این پارامتر مرتبط با I/O است و اگر سرور I/O wait بالایی دارد این پارامتر مفید و کمککننده است. برای سیستمهای 64 بیتی این امکان وجود دارد که فایلهای نگاشت شده در فضای پردازش آدرس برای بهبود کارآیی AIO نگهداری شوند.
AIO Block Size: این پارامتر حالت انتخابی از لیست کشویی دارد و سایز بلاک ارسالی برای AIO را مشخص میکند. این بلاک سایز در تعداد کل فایلهایی که در حال پردازش هستند ضرب میشود و مقدار نهایی آن باید کمتر از physical memory سرور باشد در غیر این صورت AIO کارایی نخواهد داشت. اگر سرور به اندازه کافی memory دارد میتوانید از اعداد بزرگتری استفاده کنید. مقدار پیشفرض این پارامتر «1M» است.
File ETag: این پارامتر بهصورت انتخاب از بین چند گزینه است و برای استفاده از ویژگیهای inode فایل، آخرین زمان اصلاح فایل و سایز برای تولید هدر ETag HTTP در فایلهای استاتیک است. این سه مشخصه ذکر شده بهصورت پیشفرض فعال هستند. اگر قصد پردازش فایل از جایی خارج از سرور فعلی دارید بهعنوانمثال از روی سرور mirrored شده، بهتر است که inode فایل را تیک نزنید، زیرا اگر تیک بخورد ETag که برای فایل تولید میشود روی سرورها متفاوت خواهد بود!
فشردهسازی دو نوع GZIP و Brotli در تیونینگ لایت اسپید
بخش GZIP/Brotli Compression از تیونینگ لایت اسپید مربوط به تنظیمات فشردهسازی است. در واقع این تنظیمات تیونینگ لایت اسپید مربوط به الگوریتمهای فشردهسازی GZIP و Brotli هستند.
هنگام برقراری ارتباط با یک وبسایت بین کاربر وبسایت و سرور فایلهای زیادی ردوبدل میشود که در فرمتهای مختلف متنی و مدیا هستند. هرچه حجم این فایلها کمتر باشد سرعت لود و در نتیجه پاسخدهی به کاربران افزایش مییابد. در این زمینه معمولاً دو الگوریتم پرکاربرد برای فشردهسازی فایلها استفاده میشود:
- الگوریتم GZIP که قدیمیتر است و روی انواع مدیاها مانند عکس و فیلم و… اجرا میشود
- الگوریتم Brotli که اخیراً ارائه شده است کاربردی عمومی دارد و هر نوع فایلی را فشرده میکند
پیشنهاد میشود که الگوریتم Brotli برای PNG ،JPG و GIF استفاده نشود و معمولاً روی فایلهای مبتنی بر متن مانند HTML، جاوا اسکریپت و CSS بهترین کارآیی را دارد. الگوریتم Brotli توسط شرکت گوگل ارائه شد و به علت کارآیی فوقالعادهاش بهسرعت همهگیر شد، این الگوریتم در مقایسه با GZIP قدرت بیشتری دارد.
Enable Compression: این پارامتر تیونینگ لایت اسپید بهصورت انتخاب از دکمه رادیویی است و فشردهسازی نوع GZIP/Brotli را برای انواع فایلهای استاتیک و داینامیک فعال میکند. این گزینه در حالت پیشفرض تنظیمات تیونینگ لایت اسپید فعال است.
نکته: فعال کردن آن موجب کاهش پهنای باند مصرفی شبکه میشود. فایلهای مبتنی بر متن مانند html ،css و javascript تا ۵۰% میتوانند کاهش حجم داشته باشند که این خیلی عالی است.
Compressible Types: مشخص میکند چه نوعی از MIMEها فشرده شوند. بهتر است unset باشد یا تنظیمات default گذاشته شود تا mime-typesهای پیشفرض سرور استفاده شود زیر تقریباً اکثر آنها را پوشش میدهد.
مقادیر پیشفرض این پارامتر در تیونینگ لایت اسپید به این صورت میباشند:
text/*
application/x-javascript
application/javascript
application/xml
image/svg+xml
application/rss+xml
application/json
application/vnd.ms-fontobject
application/x-font
application/x-font-opentype
application/x-font-truetype
application/x-font-ttf
font/eot
font/opentype
font/otf
font/ttf
image/x-icon
image/vnd.microsoft.icon
application/xhtml+xml
مثال: اگر قصد تغییر آنها را دارید و میخواهید نوع خاصی را حذف کنید از علامت «!» استفاده کنید بهعنوانمثال میخواهید نوع text/* فشرده شود اما text/css نشود. به رولی شبیه text/*, !text/css نیاز دارید.
نکته: در این بخش از تنظیمات تیونینگ لایت اسپید فقط از نوعهایی استفاده کنید که فشردهسازی GZIP/Brotli برای آنها مفید باشد. فایلهای باینری مثل عکسهای gif/png/jpeg یا فایلهای flash از این فشردهسازی سودی نمیبرند چون این نوع فایلها به علت پسوندشان از قبل فشرده شدهاند و Brotli در واقع آنها را بزرگتر میکند.
Enable GZIP Dynamic Compression: این پارامتر تیونینگ لایت اسپید بهصورت انتخاب از دکمه رادیویی است و با فعال کردن آن فشردهسازی GZIP پاسخهایی که اتوماتیک تولید میشوند را کنترل میکند. برای کارکرد درست این پارامتر باید Enable Compression که بهعنوان اولین پارامتر این بخش توضیح داده شد، فعال باشد.
نکته: این پارامتر تیونینگ لایت اسپید بهرهوری رَم و سیپییو را افزایش میدهد و موجب ذخیره پهنای باند شبکه میشود.
GZIP Compression Level (Dynamic Content): این پارامتر تیونینگ لایت اسپید از نوع عددی بین 1 تا 9 است و مشخصکننده سطح فشردهسازی الگوریتم GZIP که روی محتوای داینامیک اعمال میشود. این پارامتر از رنج ۱ (کمترین فشردهسازی) تا 9 (بیشترین فشردهسازی) تغییر میکند. برای اعمال این پارامتر باید Enable Compression و Enable GZIP Dynamic Compression که پیشتر توضیح داده شدند، فعال باشند. مقدار پیشفرض این پارامتر 6 است.
نکته: سطح فشردگی بالا از CPU و memory بیشتری استفاده میکند. اگر از سرور قدرتمندی استفاده میکنید میتوانید این پارامتر را روی مقادیر بالا سِت کنید اما تفاوت محسوسی بین رنج ۶ و ۹ نیست اما ۹ از CPU cycles خیلی بیشتری استفاده میکند.
Brotli Compression Level (Dynamic Content): این پارامتر تیونینگ لایت اسپید از نوع عددی بین 0 تا 6 است و سطح فشردهسازی برای الگوریتم Brotli که روی responsesهای پویا اعمال میشود را مشخص میکند. رنج این پارامتر از ۰ (غیرفعال شدن فشردهسازی) تا 6 (بیشترین فشردهسازی) است. این تنظیمات زمانی اعمال میشود که Enable Compression فعال باشد.
Auto Update Static File: این المان در تیونینگ لایت اسپید مشخص میکند آیا ورژنهای فشردهسازی GZIP/Brotli روی فایلهای استاتیک بهصورت اتوماتیک ایجاد یا آپدیت شود یا خیر؟ اگر این پارامتر به Yes تنظیم شود، زمانی که یک فایل با MIME type موجود در Compressible Typesها درخواست داده میشود، سرور الگوریتم فشردهسازی متناسب با آن فایل را بر اساس نوع فایل ایجاد یا آپدیت میکند. فشردهسازی فایل در Static Cache Directory یا همان دایرکتوری کش ثابت انجام میشود نام فایل هم بر اساس MD5 hash از مسیر فایل اصلی ایجاد میشود.
GZIP Compression Level (Static File): این پارامتر از نوع عددی بین 1 تا 9 است و سطح فشردهسازی الگوریتم GZIP روی محتوای استاتیک را مشخص میکند. این پارامتر از رنج ۱ (کمترین فشردهسازی) تا ۹ (بیشترین فشردهسازی) تغییر میکند. برای اعمال این تنظیمات باید پارامترهای Enable Compression و Auto Update Static File فعال باشند. مقدار پیشفرض این پارامتر 6 است.
Brotli Compression Level (Static File): پارامتر موردنظر در تیونینگ لایت اسپید از نوع عددی بین 1 تا 11 است و سطح فشردهسازی الگوریتم Brotliی که روی فایلهای استاتیک اعمال میشود را مشخص میکند. رنج این پارامتر از ۱ (کمترین فشردهسازی ) تا ۱۱ (بیشترین فشردهسازی) است. این تنظیمات زمانی اعمال میشود که Enable Compression فعال باشد. مقدار پیشفرض این پارامتر ۵ است. برای اعمال این پارامتر باید Enable Compression و Auto Update Static File فعال باشند.
نکته: این پارامتر میزان پهنای باند شبکه کمتری مصرف میکند. پاسخهای مبتنی بر متن مثل فایلهای html ،css و javascript بیشترین میزان بهرهوری از این قابلیت را دارند و میتوانند تا ۵۰ درصد نسبت به فایل اصلی فشرده شوند.
Static Cache Directory: این پارامتر تیونینگ لایت اسپید از نوع مسیر دایرکتوری است و مشخصکننده مسیر دایرکتوریای است که برای ذخیره فایلهای استاتیک فشردهشده استفاده میشود. این دایرکتور بهصورت پیشفرض SWAP است.
Max Static File Size (bytes): در تیونینگ لایت اسپید این مورد از نوع عددی و در واحد بایت میباشد. ماکسیمم سایز یک فایل استاتیک برای فشردهسازی اتوماتیک را مشخص میکند. مقدار پیشفرض آن 10M است و این پارامتر مقادیر نباید کمتر از 1K (در مقیاس بایت) باشد.
نکته: پبشنهاد میشود که فشردهسازی فایل برای فایلهای بزرگ ایجاد یا آپدیت نشود.
Min Static File Size (bytes): مینیمم سایز یک فایل استاتیک برای اجرای الگوریتم فشردهسازی مرتبط را در تیونینگ لایت اسپید مشخص میکند. مقدار پیشفرض 200 بایت است و بهتر است از این مقدار کمتر نباشد.
نکته: فشردهسازی فایلها با سایز خیلی کوچک ضروری نیست زیرا پهنای باند زیادی مصرف نمیکنند.
تنظیمات کلی SSL تیونینگ لایت اسپید
بخش SSL Global Setting از تیونینگ لایت اسپید مربوط به تنظیمات گواهینامههای SSL است که روی وبسایتها نصب میشوند.
Default Cipher Suite: این پارامتر الگوریتم Cipher Suite پیشفرض مورد استفاده برای گواهینامههای ssl را مشخص میکند و ورودی آن بهصورت Cipher مد نظر است و Cipherها با «;» جدا میشوند.
Cipher Suiteها مجموعهای از الگوریتمها و دستورالعملهایی هستند که برای استفاده از TLS و SSL به جهت امن کردن اتصالات شبکه استفاده میشوند.
SSL Strong DH Key: این پارامتر مشخص میکند که از DH keys با ۲۰۴۸ بیت برای پروسه دستدهی SSL (SSL Handshake) استفاده شود یا از ۴۰۹۶ بیتی. این پارامتر از نوع انتخابی دکمه رادیویی است.
DH Key کلیدی است که مبتنی بر الگوریتم Diffie-Hellman ایجاد و در SSL/TLS استفاده میشود.
Enable Certificate Compression: قابلیت فشردهسازی SSL را فعال میکند. این پارامتر از نوع انتخابی دکمه رادیویی است.
Enable Handshake Offload: در تیونینگ لایت اسپید این پارامتر از نوع انتخابی دکمههای رادیویی است. با فعالسازی این پارامتر پروسه Handshake SSL در یک thread جداگانه بارگیری میشود. بهصورت پیشفرض نیز فعال است.
Enable Session Cache: این پارامتر تیونینگ لایت اسپید از نوع انتخابی دکمههای رادیویی است، قابلیت کَش کردن شناسه جلسه یا همان session id را با استفاده از تنظیمات پیشفرض OpenSSL مجاز میکند و بهصورت پیشفرض غیرفعال است.
Session Cache Size (bytes): این پارامتر از نوع عددی است و ماکسیمم تعداد شناسه جلسههای SSL (SSL session IDs) که میشود در کَش ذخیره کرد را مشخص میکند. مقدار پیشفرض ۱.۰۰۰.۰۰۰ است.
Session Cache Timeout (secs): این پارامتر از نوع عددی است و مشخصکننده مدت زمانی که یک شناسه جلسه (session ID) داخل cache معتبر است و بعد از آن برای ادامه session نیاز به مذاکره مجدد هست. مقدار پیشفرض این پارامتر ۳۶۰۰ است.
Enable Session Tickets: این پارامتر بلیط جلسه یا همان session ticket را با استفاده از تنظیمات session ticket پیشفرض OpenSSL فعال میکند. برای اینکه این پارامتر روی هاستهای مجازی یک سرور (Server-level) موثر باشد باید تنظیمات مربوط به Server-level فعال باشد. بهصورت پیشفرض Server-level و VH-Level فعال هستند.
session ticket قابلیتی که در آخرین تغییرات پروتکل SSL برای پروسه دستدهی یا همان handshake اضافه شده است که در یک session ticket اطلاعات کامل مربوط به session ارسال میشود مانند Cipher Suiteی که استفاده میشود.
SSL Session Ticket Key File: این پارامتر اجازه میدهد که SSL Ticket Key توسط administrator ایجاد یا نگهداری شود. فایل باید ۴۸ بایت باشد و اگر این پارامتر خالی بماند، متعادلکننده بار (load balancer) مجموعه کلیدهای خود را تولید و نگهداری میکند. فرمت این پارامتر نیز بهصورت مسیر یک دایرکتوری است.
نکته: برای حفاظت از امنیت پیش رو (Forward secrecy)، اکیداً توصیه میشود که Key بعد از اتمام ثانیههای مدت عمر SSL Session Ticket تغییر داده شود. اگر نمیتوانید این مورد را کنترل نمایید بهتر است این پارامتر خالی گذاشته شود.
Forward secrecy یک policy جدید از پروتکل HTTPS است که مطابق با این سیاست در صورتی که کلیدهای یک Session یا همان نشست SSL دزدیده شود امکان هک یا دزدیده شدن کلیدهای نشستهای قبلی و بعدی نخواهد شد. به همین خاطر برای پارامتر اکیداً توصیه میشود که بعد از اتمام Lifetime یک SSL session ticket فایل key تغییر داده شود.
QUIC در تیونینگ لایت اسپید
بخش QUIC از تیونینگ لایت اسپید، مربوط به تنظیمات پروتکل QUIC هستند.
QUIC مخفف Quick UDP Internet Connections است که یک روش جدید انتقال است که تاخیر را در مقایسه با TCP کاهش میدهد. این پروتکل توسط گوگل طراحی شده و بسیار شبیه TCP+TLS+HTTP/2 است که روی UDP اجرا شوند. که این پارامتر پههی پروتکلهای شبکهای سرور را روی QUIC فعال میکند و بهصورت پیشفرض نیز فعال است.
Enable QUIC: در تیونینگ لایت اسپید این پارامتر پروتکل شبکهای سرور QUIC را فعال میکند و بهصورت پیشفرض نیز فعال است.
نکته اگر QUIC فعال شود همچنان در listener level از طریق Allow QUIC یا virtual host level از طریق Enable QUIC میتوان آن را غیرفعال کرد.
QUIC SHM Directory: دایرکتوری ذخیره دادههای QUIC در حافظهی اشتراکی را مشخص میکند. SHM در اینجا مخفف save to shared memory است. دایرکتوری پیشفرض /dev/shm است.
نکته: برای این پارامتر یک پارتیشن مبتنی بر رَم مانند /dev/shm استفاده میشود.
QUIC Versions: این پارامتر یک لیستی از ورژنهای QUIC است. این تنظیمات فقط برای محدود کردن پشتیبانی از ورژنهای QUIC موجود استفاده میشود و بهتر است این فیلد خالی بماند. این پارامتر بهصورت ورژنهایی از QUIC است که با کاما مجزا میشوند. بهعنوانمثال: Q035, Q039
نکته: اکیداً توصیه میشود این پارامتر خالی گذاشته شود تا بهترین تنظیمات اتوماتیک اعمال شود.
Congestion Control: این پارامتر مشخصکننده الگوریتم کنترل ازدحام (congestion control) است. congestion control مبحثی مربوط به پروتکلهای شبکه مانند TCP است که از ازدحام بیش از حد دادههای انتقالی در صف انتظار که موجب از بین رفتن بستهها میشود، جلوگیری میکند. این پارامتر را میتوان بهصورت دستی تنظیم کرد یا اینکه با انتخاب حالت Default روی مقادیر موجود در کتابخانههای QUIC تنظیم شود.
Connection Flow Control Window: سایز ابتدایی بافر تخصیص داده شده برای یک اتصال QUIC است. مقدار پیشفرش این پارامتر 1.5M است. این پارامتر بین 64K و 512M تنظیم میشود.
نکته: مقدار بیشتر از محدودهی اعلام شده از مموری بیشتری استفاده میکند.
Max Connection Flow Control Window: مشخصکننده ماکسیم سایزی است که به window buffer یک اتصال کنترل ازدحام برای تنظیم سایز windows داده میشود. در واقع windows مفهومی است که در الگوریتمهای کنترل ازدحام استفاده میشود.
مقدار پیشفرض این پارامتر صفر است و به این معنا است که مقدار Connection Flow Control Window (پارامتر قبلی) استفاده میشود و auto-tuning یا همان تنظیم خودکار انجام نخواهد شد. این پارامتر میتواند صفر باشد یا به عددی بین 64K و 512M تنظیم شود.
نکته: تنظیم مقدار بیشتر از محدوده اعلام شده از مموری بیشتری استفاده میکند.
Stream Flow Control Window: این مورد در تیونینگ لایت اسپید مقدار اولیهای از دادهها است که برای یک ارتباط QUIC در هر استریم دریافت خواهد کرد. مقدار پیشفرض این پارامتر 1M است. این پارامتر عددی بین 64K و 128M میگیرد.
نکته: تنظیم به مقدار بیشتر از محدودهی اعلام شده از مموری بیشتری استفاده میکند.
Max Stream Flow Control Window: مشخصکنندهی ماکسیمم سایز window از یک استریم کنترل جریان (stream flow control window) است که برای تنظیم خودکار window مجاز است.
مقدار پیشفرض صفر است و به این معنا است که مقدار Stream Flow Control Window استفاده میشود و auto-tuning یا همان تنظیم خودکار انجام نخواهد شد. این پارامتر میتواند عددی بین 64K و 128M بگیرد.
نکته: تنظیم به مقدار بیشتر از محدودهی اعلام شده از مموری بیشتری استفاده میکند.
Max Concurrent Streams Per Connection: ماکسیمم تعداد مجاز استریم در هر ارتباطِ QUIC است. مقدار پیشفرض این پارامتر نیز ۱۰۰ است و بهصورت کلی یک عدد Integer در بازه ۱۰ تا ۱۰۰ میگیرد.
Handshake Timeout: مدت زمانی به ثانیه که به یک اتصال جدید QUIC داده میشود تا پروسه handshake را کامل کند و بعد از آن اتصال قطع میشود. (aborted) مقدار پیشفرض نیز ۱۰ است. بهصورت کلی یک عدد Integer در بازه ۱ تا ۱۵ میگیرد.
Idle Timeout: این پارامتر از نوع Integer است و عددی بین ۱۰ تا ۳۰ به ثانیه میگیرد و مشخصکننده مدت زمانی است که اگر در طول این بازه یک اتصال QUIC بیکار باشد، بسته میشود. مقدار پیشفرض این پارامتر ۳۰ است.
نتیجهگیری
بهطورکلی تیونینگ لایت اسپید یکی از اقداماتی است که میتواند در سرعت سایت شما و میزان هزینهای که قرار است برای پهنای باند و خرید منابع بیشتر بپردازید بسیار موثر باشد. شما با استفاده از امکاناتی که این وبسرور در اختیار شما قرار میدهد این امکان را دارید تا یک کارکرد ایدهآل از آن را بهدست آورید و بهطور حرفهای یک وبسرور را برای سایت خود شخصیسازی کنید. البته باید توجه داشته باشید که نکات و موارد گفته شده در این مقاله را حتما رعایت کنید.