آموزش افزایش سرعت سایت با شبکه توزیع محتوا یا CDN

منتشرشده توسط فرزین اعتماد در تاریخ

هر آنچه که باید در رابطه با Content Ddelivery Network یا CDN و پیکربندی آن بدانید.

CDN چیست؟

شبکه توزیع محتوا یا CDN به گروهی از سرورها اشاره دارد که به صورت جغرافیایی توزیع شده‌اند و با یکدیگر برای تحویل سریع محتوای اینترنتی به یک کاربر کار می‌کنند.

یک CDN شما را قادر به انتقال سریع اطلاعات مهم و مورد نیاز از اینترنت برای بارگذاری، مانند صفحات HTML، فایل‌های جاوا اسکریپت، استایل‌شیت‌ها، تصاویر و ویدئوها می‌سازد. محبوبیت سرویس‌های CDN همچنان در حال رشد و توسعه است و امروزه اکثریت ترافیک وب، از طریق CDNها رد و بدل میشوند؛ مانند ترافیکی و بازدیدی که از سایت‌های بزرگی چون فیسبوک، نتفلیکس و آمازون حاصل می‌شود.

یک CDN که به صورتی درست پیکربندی شده باشد،می‌تواند علاوه بر افزایش سرعت بارگذاری وبسایت برای کاربر ، وبسایت‌ها را در برابر برخی از حملات بدخواهانه‌ی رایج، مانند حملات DDOS محافظت کند.

CDN چگونه کار می‌کند؟

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

این IXPها (Internet exchange points) موقعیت‌های اولیه‌ای هستند که ارائه دهندگان مختلف اینترنت برای ممکن سازی دسترسی یکدیگر به ترافیک حاصل از شبکه‌های مختلف آن‌ها، به یکدیگر متصل می‌شوند. با داشتن اتصال به این موقعیت‌های دارای سرعت بالا که در سطوح بالا به یکدیگر متصل شده‌اند، یک ارائه کننده‌ی CDN قادر است که هزینه‌ها را کاهش بدهد و تحویل داده‌ها را در زمان بسیار پر سرعت امکان پذیر سازد.

ورای قرار دادن سرورها در IXPها، یک CDN تعدادی بهینه سازی بر روی انتقال دهندگان استاندارد کلاینت/سرور داده‌ها ایجاد می‌کند. CDNها مراکز داده را در موقعیت‌های استراتژیک در سراسر جهان قرار می‌دهند، امنیت را بالا می‌برند، و برای سپری کردن انواع ناتوانی ها و هک و ازدحام اینترنت طراحی شده‌اند.

آیا CDN‌ شبیه میزبانی وب (هاستینگ) است؟

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

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

مزایای استفاده از یک CDN چیست؟

اگرچه مزایای استفاده از یک CDN بسته به نوع و نیازهای یک کسب و کار اینترنتی تغییر می‌کند،اما مزیت‌های اولیه برای اکثریت کاربران می‌تواند در ۴ دسته بندی زیر تعریف شود:

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

 

  • کاهش هزینه‌های پهنای باند: هزینه‌های مصرف پهنای باند برای هاستینگ وبسایت یک برآمد و هزینه‌ی اولیه برای وبسایت است. از طریق پنهان‌سازی و سایر بهینه‌سازی‌ها، CDNها قادر هستند که میزان داده‌هایی را که سرورهای اصلی باید فراهم کنند را کاهش بدهند و به این ترتیب هزینه‌های هاستینگ نیز برای مالکان وبسایت کاهش پیدا میکند.

 

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

 

  • بهبود امنیت وبسایت: یک CDN با ارائه‌ی DDOS خفیف و سبک شده، اصلاح امنیت گواهی‌نامه‌ها و سایر بخش ها ، میتواند امنیت وب سایت را بهبود ببخشد.

بهینه سازی سرعت سایت توسط CDN چگونه است؟

زمان بارگذاری وبسایت به قدری مهم است که کاربران در صورت سنگین بودن وبسایت سریعا آن را ترک میکنند. سرویس‌های CDN می‌توانند از طریق روش‌هایی که در ادامه مطرح می‌شوند،  به کاهش زمان‌های بارگذاری کمک کنند:

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

بهینه‌سازی‌های سخت‌افزاری و نرم‌افزاری مانند توازن موثر بارگذاری و هارد درایوها کمک می‌کنند که داده‌ها سریع‌تر به کاربر برسند.

CDNها می‌توانند مقادیر داده‌هایی را که با کاهش سایز فایل‌ها از طریق فشرده‌سازی فایل یا خلاصه‌سازی کد منبع (MINIFICTION) منتقل شده‌اند را کاهش بدهد. هرچه سایز فایل‌ها کوچکتر باشد، زمان‌های بارگذاری سریع‌تر خواهند بود.

CDNها همچنین می‌توانند سرعت سایت‌هایی را که از گواهی‌نامه‌های TLS/SSL استفاده می‌کنند، از طریق بهینه‌سازی استفاده‌ی مجدد و فعال سازی شروع نادرست TLS (TLS false start)، افزایش بدهند.

افزونگی و قابلیت اطمینان؛ چگونه CDN یک وبسایت را همیشه در دسترس نگه میدارد؟

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

متعادل کننده‌ی بار ترافیک شبکه را در میان چندین سرور توزیع می‌کند و مقیاس دادن به فزونی‌های سریع را در ترافیک آسان می‌کند.

Intelligent failover خدمات بدون وقفه‌ای را ارائه می‌کند؛ حتی اگر یک یا چندین سرور CDN با توجه به عملکرد بد و سوءعملکرد آفلاین شوند. Failover می‌تواند ترافیک را به سایر سرورهای عملکردی مجددا توزیع کند.

در صورتی که سراسر مرکز داده دارای مسائل تکنیکی باشد، مسیریابی Anycast ترافیک را به مرکز داده‌ی موجود دیگری منتقل می‌کند و اطمینان حاصل می‌کند که امکان دسترسی به وب سایت از هیچ کاربری سلب نشود.

امینت داده‌ها؛ یک CDN چگونه از داده‌ها محافظت می‌کند؟

امنیت داده‌ها بخشی جدایی ناپذیر از CDN است. یک سی دی ان می‌‌تواند به کمک گواهی‌نامه‌های TLS/SSL جدید که از استانداردهای بالای احراز هویت، رمزنگاری، و یکپارچگی اطمینان حاصل می‌کنند، یک سایت را ایمن نگه دارد.

تنظیمات کدینگ CDN:

شما با اصلاح تصاویر، JS و CSS از طریق CDN خود می‌توانید بهبود عملکرد وب سایت خود را به سرعت مشاهده کنید؛ پس ما نیز بر روی همین نکات تمرکز خواهیم کرد. شما می‌خواهید برخی از انواع قراردادها را که تغییرات URLها را در میان کدهای شما آسان می‌کند، تنظیم کنید. اساسا هر زمانی که شما یک URL تولید می‌کنید، در عوض آن از CDN خود استفاده می‌کنید.

index.php – PHP
 

۱

۲

۳

۴

۵

۶

۷

۸

۹

۱۰

۱۱

۱۲

۱۳

۱۴

۱۵

۱۶

۱۷

۱۸

<?php

define(‘CDN’, ‘http://cdn.mycdnprovider.com/’);

?>

<html>

<head>

<script type=’text/javascript’>

/* A javascript global for using the CDN inside scripts */

var CDN = ‘<?php echo CDN ?>’;

</script>

<!– (generated server side from less/style.less) –>

<link rel=’stylesheet’ href='<?php echo CDN ?>css/style.css’ />

</head>

<body>

<img src='<?php echo CDN ?>img/logo.png’ />

<button>Submit</button>

<script type=’text/javascript’ src='<?php echo CDN ?>js/main.js’></script>

</body>

</html>

 

 

js/main.js-JavaScript

 

۱

۲

۳

۴

(function() {

var preloadImage = document.createElement(‘img’);

preloadImage.src = CDN + ‘img/button_hover.png’;

})();

 

همان طور که در بخش‌های PHP و JAVASCRIPT مشاهده می‌کنید، این کار به سادگی استفاده از یک پیشوند در مقابل URLهای مربوطه‌ی شما است.

اما در رابطه با CSS چگونه است؟ هیچ مورد مشابهی با متغیرهای CSS وجود ندارد و به همین دلیل است که نباید هرگز یک CSS عادی بنویسید. اگر تا کنون از هیچ کدام از SASS  و LessCSS استفاده نکرده‌اید، بهتر است که همین حالا مسیر خود را تغییر بدهید! ما LessCSS راترجیح می‌دهیم، به همین خاطر در ادامه چگونگی تنظیم استایل‌هایتان را بر همین اساس ارائه می‌کنیم:

style.less – LESS

 

۱

۲

۳

۴

۵

۶

۷

۸

@CDN: ‘http://cdn.mycdnprovider.com/’;

 

button {

background-image: url(‘@{CDN}img/button.png’);

&:hover {

background-image: url(‘@{CDN}img/button_hover.png’);

}

}

اکنون شما باید کنترل کاملی بر روی URLهای استفاده شده برای ارائه‌ی محتوای ایستا به کلاینت‌ها داشته باشد. اگر می‌خواهید که CDN را غیر فعال کنید، تنها باید { CDN = ‘/’;} را تنظیم کنید و منابع از سرور شما حذف می‌شوند.

پیکربندی سرور

تا همین میزان نیز می‌تواند شما را راضی کند اما موارد بیشتری هم وجود دارد. اکثر پروژه‌ها دارای سه محیط local/dev، staging/testing و live/production هستند و شما باید برای پیکربندی این که کدام سرور CDN بر اساس محیط استفاده شده است، روش و متدی داشته باشد. احتمالا شما نمی‌خواهید که از هر CDNای بر روی dev server خود استفاده کنید و باید سرور آزمایشی (testing server) شما از CDNای متفاوت از سرور تولید (production server) استفاده کند تا از تضادها و ناسازگاری‌های نسخه‌بندی جلوگیری شود. بنابراین همه‌ی آن چه شما نیاز دارید تعدادی از فایل‌های پیکربندی است. در مثال زیر از فریم‌ورک CakePHP استفاده شده است.

app/Config/cdn.php – PHP
۱

۲

۳

۴

۵

۶

<?php

// A CakePHP configuration file

$config = array(

‘CDN’ => array(‘path’ => ‘http://cdn.mycdnprovider.com/’)

);

?>

 

bootstrap.php -PHP
۱

۲

۳

۴

Configure::load(‘cdn’);

define(‘CDN’, Configure::read(‘CDN.path’));

 

less/cdn.less – LESS
۱ @CDN: ‘http://cdn.mycdnprovider.com/’;

 

style.less – LESS
۱

۲

@import ‘cdn’;

/* @CDN defined above, the rest of your LESS below */

 

فایل‌های پیکربندی بالا نباید در کنترل نسخه (version control) بررسی شوند، زیرا احتمالا از یک سرور به سروری دیگر متفاوت هستند. در عوض آن، پیش فرض‌هایی مانند  cdn.php.default و  cdn.less.default را بررسی کنید؛ با این قصد که به علت این که توسعه دهنده برای اولین بار از این کد برای سرور استفاده می‌کند، فایل‌های پیکربندی مورد نیاز را با تنظیمات خاص آن سرور ایجاد کرده است.

باطل‌سازی منابع و نسخه‌بندی

شما می‌توانید CDN خود را با با جمع‌آوری منابع از یک سرور اصلی پیکربندی کنید؛ اگر از راهکار پوشه‌ی تفسیر شده (versioned folder) برای مسئله‌ی باطل‌سازی استفاده کنید، URL شما ممکن است چیزی شبیه این مورد به نظر برسد:

http://cdn.mycdnprovider.com/ver-1.0.0/img/logo.png

برای سلب اعتبار یا باطل کردن logo.png  ممکن است شماره‌ی نسخه را به ۱.۰.۱ تغییر بدهید که به موجب آن CDN را وادار می‌کنید که یک کپی متفاوت از منابع تهیه کند. با بازنویسی یک URL ساده، وب سرور ما می‌تواند شماره‌ی ورژن URL را دور بزند و logo.png را از همان مسیر روی سرور تحویل بدهد.

 

.htaccess
۱

۲

۳

۴

۵

۶

۷

۸

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^ver-[0-9]+.[0-9]+.[0-9]+(.*)$ $1 [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?/$1 [QSA,L]

</IfModule>

 

به همین ترتیب به راحتی می‌توانید بدون نیاز به تکثیر منابع، آن‌ها را بی اعتبار و یا باطل کنید. CDN و مرورگر کلاینت تصور می‌کنند که در حال دانلود از versioned folder هستند، اما ما می‌دانیم که چه روندی در حال اجرا است!

پیکربندی بیشتر

ممکن است بخواهید که تنها فایل‌های پیکربندی CDN فعلی خود را تغییر بدهید تا شامل یک شماره نسخه شود. برای حفظ کد فریم‌ورک ماژولار، بهترین کار داشتن فایل پیکربندی VERSION مجزا است. شما می‌خواهید این فایل را به کنترل نسخه (version control) تبدیل کنید، بخصوص اگر که چندین توسعه‌دهنده بر روی این پروژه داشته باشید. فایل‌های نسخه خود را ایجاد و از آن‌ها استفاده کنید:

VERSION
 

۱    ۱٫۰٫۰

bootstrap.php – PHP
۱

۲

۳

۴

۵

Configure::load(‘cdn’);

define(‘VERSION’, file_get_contents(APP.DS.”Config”.DS.”VERSION”));

define(‘CDN’, Configure::read(‘CDN.path’).VERSION.’/’); /* the trailing slash is important */

 

version.less – LESS
۱ @VERSION: ‘1.0.0’;

style.less

 

style.less – LESS
۱

۲

۳

۴

۵

۶

۷

۸

۹

۱۰

@import ‘cdn’;

@import ‘version’;

@CDNVER: ‘@{CDN}@{VERSION}/’;

 

button {

background-image: url(‘@{CDNVER}img/button.png’);

&:hover {

background-image: url(‘@{CDNVER}img/button_hover.png’);

}

}

 

 

CDN چیست؟
  • کیفیت محتوا
5

خلاصه محتوا

هر آنچه که باید در رابطه با Content Ddelivery Network یا CDN و پیکربندی آن بدانید.
CDN چیست؟
شبکه توزیع محتوا یا CDN به گروهی از سرورها اشاره دارد که به صورت جغرافیایی توزیع شده‌اند و با یکدیگر برای تحویل سریع محتوای اینترنتی به یک کاربر کار می‌کنند.

Sending
User Review
5 (1 vote)
Comments Rating 0 (0 reviews)

فرزین اعتماد

درود من فرزین اعتماد هستم - متخصص سئو محتوا و سئو سایت / مدرس دوره های سئو و بازاریابی محتوا / +متخصص وبمسترتولز (کنسول گوگل) و گوگل آنالیتیک (سرتیفیکیت گوگل) / بخشی از مطالبی که قرار میدم دستخط خودمه و بخشی دیگه از سایت های بزرگ و معتبر سئو گرفته و ترجمه شده/ توی اینستاگرامم همیشه ریز نکات سئو و جدیدترین اخبار بهینه سازی رو قرار میدم. https://instagram.com/farzinetemad / باعث افتخاره که مهمانم هستید / ♥ وب اپراتور ♥

دیدگاهتان را بنویسید

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

Sending

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.