هنگامی که درباره وبسایتها صحبت میکنیم، مسالهی بهبود سرعت بارگذاری، مسالهی بسیار مهمی است. به عنوان صاحب یک وبسایت یا برنامه نباید اجازه دهید که مشتریان، وبسایت شما را به دلیل زمان زیاد بارگذاری صفحه ترک کنند. استفاده از CDN یکی از راههای بسیار موثر برای تحویل سریعتر دادههای شماست. با وجود بهبود عملکرد وب سایت در صورت استفاده از سرویس CDN، اما در صورتی که این سرویس به درستی تنظیم نشده باشد، پتانسیل استفاده از آن را از دست میدهید. رایجترین اشتباهات در راهاندازی CDN باعث کاهش یا صفر شدن نرخ برخورد یا Hit Ratio کش میشود. این بدان معناست که درخواستها به حافظه پنهان سرورهای لبه ما برخورد نمیکنند و به سمت سرور اصلی هدایت میشوند.
برای آشنایی کامل با شبکه تحویل محتوای CDN اینجا کلیک کنید.
مشکلات انتقال به CDN مشکلات رایجی هستند که بدون دانستن پیامدهای آنها، در آینده گرفتار میشویم.در ادامه تعدادی از مشکلات انتقال به CDN و راهحل آنها را توضیح میدهیم.
آنچه در این مقاله میخوانید:
عدم اعتبار انتخابی حافظه پنهان CDN
نسبت HIT حافظه پنهان
به طور کلی در CDN، هدف این است که نسبت HIT (Hit Ratio) کش خود را بهینه کنید تا دادههای درخواستی از سرورهای کش به کاربر تحویل داده شود و سریعتر به کاربران نهایی شما برسد.Hit Ratio یا نرخ برخورد حافظهی پنهان، درصد موفقیت از رجوع به حافظهی پنهان نسبت به همهی مراجعات به حافظه میباشد. موفقیت به این معنی است که هنگام رجوع به حافظهی پنهان دادهها در حافظه وجود دارند و نیازی به مراجعه به سرور اصلی نمیباشد. هر چه hit ratio حافظه پنهان شما بیشتر باشد، تحویل داده سریعتر است. در هنگامی که دادههای درخواستی در حافظه پنهان وجود ندارند، درخواست کاربر به سمت سرور ارسال میشود. دادهها از مبدا بازیابی شده و به کاربر نهایی ارسال میشوند.
Hot cache:
حالتی که در آن CDN به طور موثر دادههای کش شده را از سرورهای لبه تحویل میدهد.
Cold Cache:
حالتی که در آن CDN هیچ داده ای در حافظه پنهان ندارد تا در صورت درخواست آن را ارائه دهد.
Headers:
بخشهایی از فایلها که برای تبادل اطلاعات شی یا درخواست بین دستگاههای سرویسگیرنده و سرور استفاده میشوند.
تنظیم هدرهای cache-control
تمایل ارائهدهندگان CDN این است که تمام دادههای شما را در حافظه پنهان ذخیره کنند. با این حال ممکن است نخواهید برخی از فایلهای خود را در حافظه پنهان ذخیره کنید. برای انجام این کار شما معمولا یک هدر ویژه “cache-control: no-cache” تنظیم میکنید که CDN/Proxy مرورگر را برای ذخیره فایلهای خاص ممنوع میکند.
گاهی اوقات، ممکن است این هدر در تمام فایلهای شما وجود داشته باشد. سرورهای CDN به تنظیمات شما احترام میگذارند و هیچ کدام از محتوای شما را کش نمیکنند. در نتیجه بسیاری از مزایای CDN را از دست میدهید. این وضعیت در هنگامی که در گزارشهای CDN شما بیشتر یا تمام ترافیک شما به عنوان ذخیرهنشده قید شده است، به راحتی قابل تشخیص است.
راه حل:
فقط برای فایلهایی که میخواهید از شبکه تحویل حذف شوند، هدرهای “cache-control: no-cache را تنظیم کنید. این هدرها را از هر فایل دیگری در وبسایت خود حذف کنید.
تنظیم انقضا/ حداکثر سن هدرها
توانایی کنترل حداکثر زمانی که CDN مجاز است محتوای شما را ذخیره کند بسیار عالیست. با این حال، برخی از وبسایتها برای هر فایل “cache-control: maxage=0” ارسال میکنند. حتی اگر تنظیمات دیگر نیز درست انجام شده باشند، هیچ محتوایی کش نمیشود و مزایای استفاده از CDN از بین میرود و مانند مورد قبلی اکثر یا تمام ترافیک گزارشهای خود را بدون کش خواهید دید.
راه حل:
بررسی کنید که آیا مقادیر مناسب“cache-control: max-age=” or “expiry:” را در هدرهای خود ارسال میکنید.
وبسایت با کوکیها
امروزه اکثر صفحات از کوکیها استفاده میکنند. با این حال، ممکن است ناخواسته آنها را با فایلهای ثابتی که میخواهید از طریق CDN تحویل دهید، ارسال کنید. این مورد ممکن است باعث ایجاد مشکل شود؛ زیرا اکثر ارائهدهندگان CDN هیچ فایلی را با کوکیهای تنظیم به طور پیشفرض کش نمیکنند. اگر کوکیها را برای همه فایلهای خود تنظیم میکنید (به دلیل تبلیغات یا هر دلیل دیگری) همه ترافیک را بدون کش میبینید.
راهحل:
اگر میخواهید فایلهایتان در CDN ذخیره شوند، حتی اگر کوکیها را با آنها ارسال میکنید، سادهترین راه این است که به تنظیمات CDN خود نگاهی بیندازید و گزینهای برای نادیده گرفتن کوکیها پیدا کنید.
اگر CDN شما از این تنظیم کلی پشتیبانی نمیکند، فایلهای موجود در منبع خود را بررسی کنید. ممکن است هدرهای «کوکیهای تنظیم شده» را با فایلهایی که میخواهید در CDN ذخیره شوند، ارسال میکنید. اگر مشکل شما در اینجاست، به سادگی آنها را حذف کنید.
تنظیم زمان انقضا
شما میتوانید انقضای کش را حتی بدون استفاده از هدرهای HTTP تنظیم کنید. میتوانید این مقدار را به طور کلی برای کل منبع CDN در داشبورد خود تنظیم کنید. اگر بخش بزرگی از ترافیک شما در حالت غیر کش است، ممکن است در موارد نادری به دلیل تنظیم نادرست این مقدار باشد. (دادهها فقط برای مدت کوتاهی در حافظه پنهان ذخیره میشوند.) با این حال، اگر حداکثر سن و تاریخ انقضا را ارسال میکنید، به جای مقداری که در داشبورد تنظیم کردید، CDN مقدار ارسالی آن را در نظر میگیرد.
راه حل:
مدت زمان بیشتری را برای انقضای حافظه پنهان خود تعیین کنید.
فایل index.html را کش نکنید
یکی از اشتباهات رایجی که در هنگام انتقال به CDN انجام میدهیم کش کردن همه چیز از جمله فایل index.html است. در حالی که کش کردن index.html برای یک وبسایت قابل قبول است، اما میتواند تاثیرات نامطلوبی بر یک برنامه وب داشته باشد. مشکل این است که اگر مرورگر کاربر یا CDN نسخه قدیمی index.html را در حافظه پنهان کند، ممکن است این فایل با بخش backend سایت ناسازگار شود. بنابراین مهم است که index.html را به هیچ وجه کش نکنید. توصیه میکنیم از متاتگهای زیر برای جلوگیری از کش کردن index.html در مرورگر استفاده کنید:
<meta http-equiv=”Cache-Control” content=”no-cache, no-store, must-revalidate”>
<meta http-equiv=”Pragma” content=”no-cache”>
<meta http-equiv=”Expires” content=”0″>
عدم اعتبار انتخابی حافظه پنهان CDN
این مرحله بخشی مشترک از پازل است. در هنگام استفاده از CDN منطقی نیست که پس از انتشار نسخه جدید وبسایت یا برنامه خود، همه موارد ذخیره شده در سرورهای CDN را بیاعتبار کنید. بهتر است با توجه به تغییراتی که در هر نسخه ایجاد کردهاید، دادههای کش را طبقهبندی کرده و قوانینی را برای باطل کردن گروههای دادهها تنظیم کنید.
به عنوان مثال، از آنجایی که تغییرات مکرر برای جاوا اسکریپت و CSS در یک برنامه frontend رخ میدهد، این دو گروه میتوانند بخشی از عدم اعتبار دائمی باشند. اگر در هر نسخه از وبسایت یا برنامه خود تغییرات قابل توجهی ایجاد میکنید، میتوانید پس از انتشار نسخه جدید، حافظه پنهان را به طور کامل پاک کنید. زیرا عملکرد صحیح و اصلاح شده برنامه مهمتر از مزایای عملکرد اضافی CDN است.
خودکارسازی عدم اعتبار کش CDN
هنگامی که به عدم اعتبار کش انتخابی دقت میکنیم، حذف خطای انسانی ناشی از دست دادن یک گروه داده بسیار مهم است. از آنجایی که عدم اعتبار کش میتواند به طور مستقیم بر عملکرد برنامه تاثیر بگذارد، میتوانید قوانینی را برای عدم اعتبار کش cache invalidate به صورت خودکار تنظیم کنید.
سوالات متداول:
CDN یا شبکه تحویل محتوا چه وظایفی را انجام میدهد؟
CDN با ذخیره کردن محتوای وبسایت در سرورهایی در سراسر جهان، در هنگام درخواست کاربر، محتوا را از نزدیکترین سرور به کاربر تحویل میدهد. با این روش زمان بارگذاری وبسایت کاهش مییابد.
آیا انتقال به CDN میتواند مشکلی برای وبسایت به وجود آورد؟
فعال کردن CDN به صورت صحیح میتواند مزایای زیادی برای کاربر داشته باشد؛ اما اگر تنظیمات CDN به درستی انجام نشود ممکن است باعث ایجاد مشکل در بارگذاری وبسایت شود.
انتقال به CDN چه مزایایی برای یک وبسایت دارد؟
انتقال به CDN میتواند باعث کاهش سرعت بارگذاری وبسایت، در دسترس بودن وبسایت و استفاده صحیح از پهنای باند کمک کند.
منابع:
https://blog.bitsrc.io/boost-frontend-load-speed-using-cdn-7ae02cbbf492
https://client.cdn77.com/support/knowledgebase/introduction-cdn/top-mistakes-when-setting-up-a-cdn