سرعت سایت خود را با استفاده از subdomain و CDN بالاتر ببرید

سرعت سایت شما به چه چیزی بستگی دارد
سرعت لود شدن (به قول فارسی زیاد: بارگذاری) سایت شما به عوامل مختلفی بستگی داره مثل سرعت و پهنای باند سروری که سایت شما روی اون میزبانی میشه و البته سرعت اینترنت بازدیدکننده سایت شما.
در این بین، یک نکته نسبتا مهم معمولا فراموش میشه و اون هم نحوه ارتباط مرورگر وب کاربر شما با سروری هست که سایت شما در آنجا قرار داره. به طور کلی:
اکثر مرورگرهای وب میتوانند در لحظه فقط 2 ارتباط موازی با یک سرور مشترک و در کل 6 ارتباط موازی با سرورهای مختلف داشته باشند.
مفهوم این جمله به زبان ساده تر یعنی اگر سایت شما دارای 20 عکس در صفحه اول باشه، مرورگر وب فقط میتونه در لحظه، 2 عکس رو دانلود کنه چون این عکسها رو داره از یک سرور مشترک میخونه مثلا:
http://mytoolbox.ir/1.jpg
http://mytoolbox.ir/2.jpg
حالا فکر کنید که از طریقی بتوانید مرورگر رو مجبور کنید که بیشتر از 2 ارتباط داشته باشه، مثلا کل 6 ارتباط مجاز رو بتونه با یک سرور مشترک داشته باشه؛ اون موقع میشه گفت سرعت لود شدن عکسهای شما تقریبا 3 برابر میشه، بنابراین سایت شما با سرعت بیشتری روی مرورگر کاربر سایت شما، کامل لود خواهد شد و از نظر کاربر "سرعت سایت" بالاتر خواهد رفت و این موفقیت بسیار خوبی میتونه باشه!
استفاده از ساب دامین در ساده ترین حالت
برای اینکه بتوانیم این محدودیت 2 تایی رو از پیش رو برداریم، باید برای قسمتهای استاتیک سایت مثل عکسها و اسکریپتها و فایلهای سی اس اس، آدرس های جداگانه در نظر بگیریم. مثلا i.mytoolbox.ir برای عکسها و s.mytoolbox.ir برای اسکریپتها و c.mytoolbox.ir برای فایلهای سی اس اس. بنابراین میتونیم ارتباطات موازی بیشتری با سرور داشته باشیم به نسبت حالت قبل که همه از آدرس mytoolbox.ir بود. مثال زیر رو ببنید:
http://i.mytoolbox.ir/image1.jpg
http://i.mytoolbox.ir/image2.jpg
http://s.mytoolbox.ir/site.js
http://s.mytoolbox.ir/menu.js
http://c.mytoolbox.ir/style1.css
http://c.mytoolbox.ir/style2.css
این آدرس ها در واقع از یک محل از نظر فیزیکی هستند، اما چون آدرس سروری که به اونها اشاره میکنیم با هم متفاوت هستند بنابراین ارتباط موازی با این فایلها به صورت همزمان خواهد بود.
حالا اگر عکسهای سایت زیاد هست میشه چند ساب دامین ایجاد کرد که همه آنها به مکان نگهداری عکسها یعنی یکجا در سرور ما اشاره میکنند اما از نظر مرورگر، آدرسهای متفاوتی هستند. مثلا i1.mytoolbox.ir , i2.mytoolbox.ir . با استفاده از این روش، سرعت لود شدن سایتی که از عکس های زیادی استفاده میکنه رو میشه تا دو برابر رسوند.
ساختن ساب دامین برای سایت شما، بستگی به نرم افزار مدیریت هاست Host CP شما بستگی داره و در کل، کار بسیار ساده ای هست.
Content Delivery Network چیست؟ همونطور که گفته شد، عوامل زیادی در سرعت لود شدن سایت شما در کامپیوتر کاربر دخیل هستند که ترفند اشاره شده در قسمت قبل مربوط میشه به رفتار مرورگر و نحوه ارتباط اون با سرور. نکته بعدی که باید در مورد اون شناخت داشت، همین ارتباط مرورگر با سرور هست.
برای لود شدن سایت، مرورگر باید درخواست تک تک فایلهای مربوط به اون صفحه وب رو به سرور ارسال کنه و سرور هم در پاسخ مرورگر، اون فایل رو براش ارسال کنه. بنابراین یک زمانی برای درخواست مرورگر و پاسخ سرور در نظر بگیرید و زمانی رو برای دانلود شدن اون فایل در کامپیوتر بازدیدکننده.
هدف ما کم کردن این زمان هست. این زمان بستگی داره به پهنای باند سرور و پهنای باند کاربر. اما عامل سومی هم هست که میتونیم بهش زمان انتقال بگیم. یعنی فاصله سرور تا کاربر. این فاصله زمانی رو میشه تشبیه کرد به فاصله زمانی که شما نیاز دارید از منزل به بانک مورد نظر خودتون برسید. فرض کنید بانکی که شما به اون نیاز دارید فقط یک شعبه در شهر شما داشته باشه، بنابراین شما اگه شانس داشته باشید خونه نزدیک به بانک باشه، میتونین با پای پیاده و در چند دقیقه به اون برسید، اما اگر شما در سمت دیگر شهر باشید، شاید با حساب ترافیک، یک ساعتی در راه باشید! ( میدونم شما عادت به بانکداری الکترونیکی دارید اما در این مثال، بیخیال شوید!) حالا فرض کنید بانک شما در چهار گوشه شهر، شعبه های جدید ایجاد کنه. حتما این دفعه که به بانک میروید، زمان کمتری رو صرف میکنید چون این بار میتونین انتخاب کنید و بانکی که به شما نزدیک تره رو به عنوان مسیر انتخاب کنید. در حالت بهتر اینکه این بانک در تمام محله های شهر، شعبه بزنه. حالا شما انتخاب های بیشتری دارید. اگر در محل کار هستید میتونید به شعبه شماره 45 که نزدیک محل کار هست برید و اگر در خانه هستید به شعبه 18.
همین مثال رو در مورد یک سایت در نظر بگیرید. اگر سایت شما یک سرور داشته باشه و اون هم مثلا در کشور کانادا باشه، تمامی بازدیدکننده های سایت شما باید با سروری در کانادا ارتباط برقرار کنند. چه اونی که تو ژاپن هست و چه اونی که تو خود کانادا هست. واضح هست که سرعت برای اشخاصی که به سرور دورتر هستند، کندتر خواهد بود. مثل همون بانک مثال ما در حالت اول که فقط یکی بود. در حالت دوم، ما سروری رو برای سایت خودمون انتخاب میکنیم که از طریق تکنولوژی های موجود در مهندسی شبکه، میتونه در چندین مکان فیزیکی قرار بگیره. مثلا در کانادا و ژاپن و اسپانیا و ایران(!) حالا اگر کاربر ایرانی درخواست این سایت رو داشته باشه، مجموعه سرور، متوجه یک درخواست از ایران میشه و کاربر رو به سرور ایران میفرسته یا اگر کاربری از فرانسه بخواد سایت رو ببینه، مجموعه ما اون رو به نزدیکترین سرور خودش یعنی اسپانیا میفرسته. بنابراین به این صورت، سرعت لود شدن صفحه، به علت کم کردن زمان انتقال، بیشتر خواهد شد.
به این مجموعه که در نقاط مختلفی داری سرور هست و بسته به محل درخواست، اون رو به نزدیکترین سرور هدایت میکنه، Content Delivery Network میگوییم. در واقع CDN رو میشه به صورت شبکه ای از کامپیوترهایی با وظیفه ارسال اطلاعات درخواستی به کاربر در کمترین زمان و انتخاب مناسبترین مسافت، تعریف کرد.
شرکتهای بزرگ مثل یاهو، مایکروسافت، فیسبوک و گوگل، برای خودشون چنین شبکه ای رو به صورت خصوصی دارند. و شرکتهای دیگری هم هستند که این سرویس رو به مشتری هاشون در قبال پرداخت هزینه ای ارایه میدهند. برای نمونه میشه از شرکتهایی مثل
http://www.akamai.com و سرویس cloudfront شرکت آمازون نام برد.
CDN رو یکی از اهداف Cloud Computing هم میشه نام برد به این مفهوم که فایلهای شما مهم نیست در چه مکان فیزیکی قرار گرفته اند، مهم اینه که چجوری میشه به اون دسترسی پیدا کرد.
CDN های رایگان استفاده از سرویس CDN ، برای شما هزینه خواهد داشت. اما برخی شرکت ها، قابلیت استفاده از یک سری فایلها رو در شبکه خودشون به صورت رایگان به شما میدهند. این فایلها اکثرا منابعی هستند که به مقدار بسیار زیادی در سایت های اینترنتی به کار رفته اند مانند فایلهای کتابخونهای پر استفاده ایجکس و جاوااسکریپت. پر استفاده ترین حالت در اینترنت استفاده از فایل jQuery در سرور گوگل هست. یعنی به جای اینکه فایل اصلی jQuery رو در سایت خودتون آپلود کنید و در اسکریپت به اون فایل اشاره کنید:
<script type="text/javascript" src="scripts/jquery.min.js"></script>
به صورت مستقیم از این آدرس در src مربوط به اسکریپت استفاده میکنید:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
البته مایکروسافت هم اخیرا اعلام کرده که فایلهای مربوط به Microsoft Ajax و jQuery رو به صورت رایگان در CDN خودش قرار داده و ما میتونیم استفاده کنیم. در مورد استفاده از jQuery CDN، یک مطلب خواهم نوشت.
مزیت استفاده از یک فایل در یک CDN بزرگ مثل گوگل و مایکروسافت چیست؟
مزیت اول که در تعریف CDN توضیح داده شد یعنی به نسبت محل ما، سروری انتخاب میشه که فایل رو به ما زودتر برسونه. و اما مزیت دوم چیست؟ تعداد بسیار زیادی از سایتهای اینترنتی هستند از این CDN های اعلام شده رایگان (گوگل و مایکروسافت) استفاده می کنند. چون آدرس این فایلها ثابت هست و همه سایت ها دارن از این آدرس استفاده میکنند بنابراین شانس اینکه این فایل روی کامپیوتر کاربر شما قرارگرفته شده باشه بسیار بالاست. زیرا اگر کاربر، به اولین سایتی بره که از این قابلیت استفاده میکنه، این فایل مثل همه فایلهای دیگه برای مرورگر، در هارد کامپیوتر دانلود میشه و ذخیره میشه. به این ترتیب، مرورگر اگر در سایت دیگه ای به همین آدرس فایل برسه، اون رو دیگه دانلود نمیکنه و به همون فایلی که قبلا دانلود کرده رجوع میکنه و استفاده میکنه. بنابراین شما میتونین به اندازه حجم اون فایل، سرعت لود شدن سایت خودتون رو جلو بندازید.
*این مطالب از خودم میباشد! اگر در اون مورد اشتباهی میبینید، ممنون میشم که اعلام کنید و استفاده از این مطلب آزاد هست و اگر دوست دارید با انصاف باشید، منبع رو هم ذکر کنید.