CDN ابری

منظور از کش در CDN چیست؟ | راهنمایی جامع از سیستم Caching در شبکه توزیع محتوا

Shahin Noei Shahin Noei
47 بازدید 0 دیدگاه 18 آبان 1401
/storage/post-covers/1667735756_2022-11-06_cloud-servers-370x370.png /storage/post-images/1667735756_2022-11-06_cloud-servers-830x250.png
منظور از کش در CDN چیست؟ | راهنمایی جامع از سیستم Caching در شبکه توزیع محتوا

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

 

فایل های استاتیک (Static files)

 

بخش گسترده ای از محتوای یک سایت به فایل های استاتیکی اختصاص یافته که از قبل فرمت بندی شده و در طول زمان تغییرات چندانی نمی کنند.
این فایل ها کاندیدای پیش فرض برای کش شدن هستند، بر خلاف فایل های داینامیک (پویا) که بر اساس اطلاعات دریافتی از دیتابیس، در لحظه درخواست تولید می شوند.
برای مثال،
قالب استاتیک یک وب سایت فروشگاهی با اطلاعات پویا یا داینامیک مربوط به محصولاتش، می تواند شامل این فایل های static باشد:
•    تصاویر مربوط به قالب
•    ویدیوها
•    موزیک
•    جاوا اسکریپت
•    قایل های CSS
و...

کش CDN چه کمکی به ما می کند؟

سیستم کشینگ یک شبکه توزیع محتوا می تواند از جنبه های مختلفی باعث کاهش هزینه ها و افزایش بهره وری کسب و کار شما شود؛ از جمله:
•    کاهش هزینه های پهنای باند
توزیع محتوا از سمت پروکسی های کش  CDN ، بار سرور اصلی را کاهش می دهد؛ این موضوع به طرز چشم گیری هزینه های پهنای باند مرتبط با توزیع محتوا به بازدیدکنندگان را کاهش می دهد.
برای اکثر سایت ها، هزینه های پهنای باند می تواند از 40% تا 80% کاهش یابد، که به درصد محتوای قابل کش آنها بستگی دارد.
•    بهبود تجربه کاربری
با در اختیار داشتن یک شبکه جهانی از سرورهای پروکسی کش، CDN ها می توانند محتوای سایت شما را به کاربر نهایی نزدیک تر کنند؛ صرف نظر از موقعیت آنها.
توزیع این محتوا از سروری درون آن منطقه به طور قابل توجهی سرعت دسترسی به محتوا و تجربه  کاربری را افزایش می دهد.
•    اطمینان از توزیع محتوا
CDN های مدرن دارای ظرفیت ترافیکی بسیار فراتری از ظرفیت شبکه های سازمانی معمولی هستند. در شرایطی که یک وب سایت معمولی که روی یک هاست میزبانی می شود، می تواند با اوج گرفتن ترافیک در برخی از ساعات، یا وقوع یک حمله DDoS ، از کار بیافتد، سرورهای کش CDN می توانند بسیار قابل اطمینان و امن باشند. در نتیجه به کمک آنها می توان با لحظات اوج ترافیک نیز به بهترین شکل پاسخ داد.

سرورهای کش چطور عمل می کنند؟

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

 

پس از استقرار در محل، سرورهای کش مانند یک مخزن از محتوای وب سایت عمل کرده و به کاربران آن ناحیه دسترسی سریع تری به فایل های کش شده ارائه می کنند.
هرچه این سرور کش به کاربران نهایی نزدیک تر باشد، زمان اتصال برای انتقال داده های وب سایت کوتاه تر خواهد بود.
از لحاظ سخت افزاری، یک سرور کش معمولی در واقع نیروگاه توزیع محتواست، با منابعی نظیر رم و فضای SSD قوی تر.
برای اینکه این سیستم بتواند یک گزینه سریعتر بشمار آید، از RAM به عنوان یک منبع با اولویت بالاتر و از SSD به عنوان یک منبع کم تقاضا، یاد می شود.

الگوریتم کشینگ

کشینگ قابل اتکا بر یک نرخ ضرب (Hit ratio) بالا تکیه می کند که نمایان گر این است که منابع درخواست شده در کش حاضر هستند. در نتیجه، فرمول کلی برای محاسبه زمان میانگین ارجاع مموری (memory reference time) به شکل زیر است:

 

برای اطمینان از بالا بودن hit ratio، از چندین الگوریتم کمک گرفته می شود:
•    الگوریتم Belady
معمولاً اطلاعاتی را که برای مدت طولانی در آینده مورد نیاز نباشد، نادیده می گیرد. این رویکرد بسیار ایده آل زمانی کاربرد خواهد داشت که یک سرور بتواند مدت زمانی که اطلاعات در آینده درخواست شوند را پیش بینی کند. در نتیجه، این الگوریتم در عمل به ندرت مورد استفاده قرار می گیرد.
•    اطلاعات کمتر استفاده شده در گذشته نزدیک یا LRU (Least recently used)
این الگوریتم ابتدا آیتم هایی که به تازگی مورد استفاده قرار نگرفته اند را نادیده می گیرد؛ این الگوریتم به این شکل عمل می کند که برای هر منبع کش شده یک شمارنده منسوب می کند، تا آنهایی که شمارش کمتری دارند را نادیده بگیرد.
در کل این رویکرد یکی از موثرترین روش های مدیریت کش است.
•    اطلاعات بیشتر استفاده شده در گذشته نزدیک یا MRU (Most recently used)
بر خلاف LRU، این الگوریتم ابتدا آیتم هایی که اخیرا مورد استفاده قرار گرفته اند را نادیده می گیرد. این الگوریتم بیشتر در موقعیت هایی کاربرد دارد که هرچه آیتم قدیمی تر باشد، احتمال نیاز به دسترسی به آن نیز بیشتر باشد.
توضیحی جامع از هدرهای کش (Cache headers)
توسعه دهندگان وب از هدرهای کش http برای برچسب گذاری بر روی محتوای قابل کش وب استفاده کرده و برای آنها بازه زمانی کش تنظیم می کنند.
به کمک هدرهای کش، می توانید با اعمال سیاست های کشینگ بهینه که تازگی محتوای شما را تضمین کند، استراتژی کش خود را کنترل کنید.
برای مثال،
عبارت “Cache-Control: max-age=3600”  یعنی فایل مورد نظر می تواند تا یک ساعت قبل از الزام به دریافت محتوای اصلی، کش شود.

 

برچسب گذاری دقیق روی هر فایل، یا حتی گروهی از فایل ها،  می تواند خسته کننده و غیر اثربخش باشد؛ CDNهای مدرن به شما اجازه می دهند تا این اقدام را با بکارگیری مکانیزم هایی هوشمند که قادر به نادیده گرفتن دستورات هدرهای کش هستند، دور زده و آن رها کنید. البته در زمان هایی که این دستورات نا کارآمد باشند.
معمولاً این مکانیزم ها، کش محتوای داینامیکی را که به طور پیش فرض، غیر قابل کش برچسب گذاری شده باشند را، ممکن کرده و تازگی آن محتوا را نیز نادیده می گیرند.
جزئیات هدرهای کش
•    کنترل کش (Cache Control)
این هدرها که با HTTP/1.1 معرفی شدند، دارای کاربردهای بسیار متنوعی هستند؛ Cache control توسط تمام مرورگرهای مدرن امروزی پشتیبانی شده و جایگزینی برای هر نوع هدر نسل قدیمی به شمار می آید.
Cache control-Public: این مورد کش کردن توسط پلتفرم های عمومی نظیر CDN ها را ممکن می سازد.
Cache control-Private: این مورد برای اطلاعات خصوصی رزرو شده که غیر قابل کش تعیین شده اند.
Cache control-No-cache: این مورد قبل از کش کردن به اعتبار سنجی نیاز دارد.
Cache control-No-store: این مورد کش کردن را کاملاً ممنوع می کند.
Cache control-Public, max-age={seconds}: این مورد یک حد ماکسیموم (به ثانیه) ، برای کش کردن محتوا قبل از پاک سازی (purging) تعیین می کند.
•    Expires
این مقدار، همانند Cache control-Public, max-age برای یک محتوا ، زمان پاکسازی و انقضا تعیین می کند.
•    Surrogate
این مورد، کنترل بیشتری بر سیاست های کش به شما داده و با قدرتی برگرفته از سرور اصلی فعالیت می کند.
•    Etag
محتوای وب کش شده ی شما را با مشخصه های منحصر به فرد مجهز می کند، تا برچسب گذاری تکی و مرتب سازی پیشرفته را ممکن سازد.
•    Pragma
این مورد که توسط cache control جایگزین شده است، جهت مدیریت دستور العمل هایی برای مرورگرها مورد استفاده قرار می گرفت.
•    Vary
برخی از مرورگرها همچنان برای پشتیبانی از هدر Vary مردد هستند؛ اگر به درستی استفاده شود، این هدر می تواند یک ابزار قدرتمند برای مدیریت توزیع نسخه های چند گانه فایل ها، به خصوص برای فایل های فشرده ای که در کنار ریز فایل های کش شده خود، کش می شوند، مورد استفاده قرار گیرد.

کنترل کش هوشمند

تا امروز بیشتر عملیات کش CDN ها به صورت دستی صورت گرفته ا ست. اما CDN های مدرن در حال توسعه فرآیندهایی برای رصد، بخش بندی و کش محتوای گسترده تری هستند؛ که در نهایت در زمان شما صرفه جویی کرده و اثربخشی کلی را افزایش می دهند.
این رویکرد مبتنی بر یادگیری، به توانایی CDN در ردیابی الگوهای مصرفی محتوا در جهت بهینه سازی خودکار فضا و توزیع آن محتوا تکیه می کند. مزایای بکارگیری چنین سیستم هوشمندی در کنترل کش عبارتند از:
1.    تنظیمات دقیق تر کش برای محتوای محبوب تر در یک ناحیه
2.    قوانین کش خودکار برای محتواهای به تازگی درخواست شده
3.    همانند سازی سازنده برای محتواهای پر تقاضا
4.    آرشیو سازی حساس از لحاظ زمانی و سیاست های انقضاء
یکی از اصلی ترین مزایای کنترل کش هوشمند توانایی شناسایی فرصت های جدید کشینگ برای عناصر داینامیک است. این نوع محتویات که با هر بازدید مجدداً تولید می شوند، ممکن است هدف "تغییر " قرار نگیرند، اما همچنان بخاطر ماهیت فنی اش پویا در نظر گرفته شود.

پیش بینی به کمک یادگیری

الگو ریتم های کش هوشمند، می توانند به سادگی با رصد الگوهای مصرفی، به طور خودکار محتوای داینامیک را شناسایی کنند. برای مثال، زمانی که یک سیستم متوجه نسخه مشابهی از HTML برای یک صفحه محصولی می شود که مکرراً در حال بازدید است، آن را به عنوان Static برچسب گذاری می کند ( با اینکه به صورت داینامیک تولید می شود).
از این لحظه، این فایل html قابل کش در نظر گرفته می شود و مستقیماً از سمت سرورهای پروکسی CDN توزیع خواهد شد. این اقدام سرعت لود صفحه و پاسخ دهی به کاربر را افزایش می دهد.
در طرف مقابل، این الگوریتم ها، این فایل را ردیابی کرده و مرتباً وضعیت آن را ارزیابی می کنند، و به محض اینکه  این فایل تغییر کند، آن را داینامیک محسوب خواهند کرد.
اجرای گسترده ی این فرآیند می تواند به طرز چشم گیری عملکرد وب سایت را بهبود بخشد و در عین حال تأثیری بر تازگی محتوا نیز نگذارد.

گزینه هایی ضروری در کش

حتی با پیشرفت های اخیر در کش هوشمند، همچنان باید بر سیستم کش بهینه کنترل و مدیریتی وجود داشته باشد. به این موارد به چشم یک الزام نگاه کنید:
•    Purge cache
 به شما این امکان را می دهد تا در صورت نیاز فایل های کش شده را refresh کنید. البته دقت داشته باشید که برخی از ارائه دهندگان سرویس CDN تنها به شما اجازه refresh کردن تمام فضای کش را می دهند.
علاوه بر این برخی از ارائه دهندگان برای یک بازه زمانی، تنها تعداد محدودی از پاکسازی را برای شما در نظر می گیرند.
اثربخشی یک درخواست پاکسازی یا purging به مدت زمانی که برای تکثیر در کل شبکه بطول می انجامد محاسبه می شود.
•    Always/Never cache
 به شما کمک می کند تا هدرهای کش را نادیده بگیرید، به طوری که فایل هایی که هیچ موقع نباید کش شوند و آنهایی که همیشه به کش نیاز دارند را برچسب گذاری می کند. این یک ابزار موثر برای مدیریت کش است. بخصوص زمانی که با گزینه های مدیریتی جمعی یا bulk ترکیب شده و به شما اجازه دهد تا دستور العمل ها را به گروهی از فایل ها تعمیم دهید.
•    Cache for period
جهت اصلاح گزینه "همیشه کش کردن"  (always cache) ، این گزینه ایجاد شد تا به شما امکان تنظیم یک بازه زمانی برای فایل را ممکن سازد تا تعیین کنید که فایل مورد نظر قبل از refresh شدن تا چه مدتی می تواند از نسخه کش خوانده شود.
با دسترسی به CDN GUI، این گزینه می تواند به شما کمک کند که مدیریت بهتری بر فایل های خاص داشته باشید. البته این گزینه نیز برای مدیریت جمعی فایل ها بیشتر کاربرد دارد.

 

جمع بندی

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

CDN ابری میزبان کلود

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

سرعت در بارگذاری و تحویل محتوای سایت

مشاهده پلانها
برچسب‌ها :
نویسنده مطلب Shahin Noei

نویسنده مطلب

منظور از کش در CDN چیست؟ | راهنمایی جامع از سیستم Caching در شبکه توزیع محتوا 0 دیدگاه