Loading...

یادگیری / ذخیره‌سازی و توزیع

ذخیره‌سازی فایل روی CDN: فایل‌ها را از CDN و بدون origin خودتان ارائه دهید

برای گذاشتن فایل روی CDN نیازی به سرور origin جداگانه نیست. با ذخیره‌سازی فایل روی CDN، فایل‌ها، تصاویر، دانلودها و رسانه‌ها را مستقیماً در حساب خود آپلود می‌کنید و سریع از edge ارائه می‌دهید — با HTTPS خودکار. این‌جا می‌بینید ذخیره‌سازی فایل روی CDN چگونه کار می‌کند، چگونه از پنل یا CLI به‌نام cdnctl استفاده کنید و چه زمانی به object storage سازگار با S3 نیاز دارید.

Updated

ذخیره‌سازی فایل روی CDN: فایل‌ها را از CDN و بدون origin خودتان ارائه دهید

منظور از «ذخیره‌سازی فایل روی CDN» چیست

بیشتر CDNها در حالت Pull کار می‌کنند: edge سرور origin موجود شما را نگه می‌دارد و محتوا را همان‌طور که بازدیدکنندگان درخواست می‌کنند از آن می‌کشد (pull). این وقتی که سایتی از قبل اجرا می‌کنید عالی است. اما اگر فقط فایل‌هایی برای ارائه دارید — یک لوگو، یک PDF، یک دانلود، یک ویدیو، فایل‌های ساخته‌شدهٔ یک اپ — راه‌اندازی و نگه‌داری یک سرور origin برای آن‌ها اضافه‌کاری است.

ذخیره‌سازی فایل روی CDN برعکس این است. به‌جای اشاره‌دادن CDN به سرور خودتان، فایل‌ها را روی خود CDN ذخیره می‌کنید و مستقیم از edge ارائه می‌دهید. خود CDN همان origin است. سروری نیست که شما اجرا، پچ یا مقیاس‌دهی کنید: یک فایل آپلود می‌کنید، یک URL می‌گیرید، و هر بازدیدکننده فایل را از نزدیک‌ترین موقعیت edge روی HTTPS دریافت می‌کند. این همان چیزی است که با «ارائهٔ فایل از CDN» یا «cdn origin storage» منظور دارند — CDN فایل را نگه می‌دارد و تحویل می‌دهد.

گزینهٔ الف — آپلود از پنل (بدون CLI)

ساده‌ترین راه مستقیماً از پنل cdn.com.tr است. بخش Files حساب خود را باز کنید، فایل‌هایی را که می‌خواهید ارائه دهید آپلود کنید و آن‌ها را در پوشه‌ها سازمان‌دهی کنید، درست مثل یک فایل منیجر معمولی. چیزی برای نصب نیست و چیزی برای پیکربندی نیست — آپلود در ذخیره‌سازی CDN حساب شما می‌نشیند.

به‌محض آپلود، فایل از طریق CDN و روی URL خودش ارائه می‌شود، در edge cache می‌شود و با SSL خودکار پوشش داده می‌شود، پس لینک از همان ابتدا HTTPS است. این مسیر درست وقتی است که چند فایل دارید، می‌خواهید آن‌ها را به‌صورت بصری ببینید و مدیریت کنید، یا از آن دسته افرادی نیستید که در ترمینال زندگی می‌کنند. برای آپلود انبوه، گام‌های تکرارشونده یا خودکارسازی، CLI زیر سریع‌تر است.

گزینهٔ ب — CLI به‌نام cdnctl (مثل scp کار می‌کند)

cdnctl ابزار خط‌فرمان اپراتور برای cdn.com.tr است و آپلود فایل را شبیه scp می‌کند. نخست، یک‌بار وارد شوید و حساب خود را انتخاب کنید تا هر دستور بداند کجا باید بگذارد: cdnctl login --email you@example.com --password ... را اجرا کنید (یا cdnctl configure --endpoint https://cdn.com.tr --token <token> اگر از API token استفاده می‌کنید)، سپس cdnctl accounts use <account_uuid> برای تنظیم حساب پیش‌فرض. پس از آن، دستورهای مربوط به حساب به‌سادگی کار می‌کنند.

برای آپلود، از cp دقیقاً مثل scp استفاده کنید — نخست مسیر محلی، سپس مسیر remote: cdnctl cp ./logo.png images/logo.png یک فایل را در images/logo.png در ذخیره‌سازی CDN شما می‌گذارد. برای فرستادن یک پوشهٔ کامل -r بیفزایید: cdnctl cp -r ./dist assets/ هر فایل زیر ./dist را در assets/ آپلود می‌کند. برای بازنویسی فایل‌های موجود --force را پاس دهید. اگر حساب پیش‌فرض تنظیم نکرده‌اید می‌توانید مستقیماً با account_uuid:remotepath یک حساب مشخص را هدف بگیرید.

اگر زیردستورهای صریح را ترجیح می‌دهید، گروه files همان کارها را انجام می‌دهد و JSON چاپ می‌کند که می‌توانید در اسکریپت‌ها پارس کنید: cdnctl files put --file ./logo.png --target-path images/logo.png [--force] یک فایل آپلود می‌کند، cdnctl files ls [--path <path>] آنچه ذخیره شده را فهرست می‌کند، cdnctl files mkdir --path <path> پوشه می‌سازد و cdnctl files rm --path <path> --yes چیزی را حذف می‌کند. همان ذخیره‌سازی پنل — فقط از ترمینال شما هدایت می‌شود.

چه زمانی به‌جای آن از object storage سازگار با S3 استفاده کنیم

ذخیره‌سازی فایل ساده‌ترین راه میزبانی و ارائهٔ فایل‌های استاتیک و رسانه از طریق CDN است. وقتی به چیز بیشتری نیاز دارید — bucket، access key، یا هدایت آپلودها به‌صورت برنامه‌ای با ابزارهای S3 موجود — به object storage سازگار با S3 بروید، که پشتیبان آن Ceph RGW است.

با cdnctl یک bucket با cdnctl object-storage buckets create --account <uuid> --name <bucket> می‌سازید، آن‌ها را با cdnctl object-storage buckets list --account <uuid> فهرست می‌کنید و کلیدهای access و secret مربوط به S3 را با cdnctl object-storage access-keys create --bucket <bucket_uuid> صادر می‌کنید. از آن‌جا هر کلاینت یا SDK سازگار با S3 می‌تواند bucket را بخواند و بنویسد. همچنین می‌توانید یک bucket را مستقیم به یک container app متصل کنید تا به‌صورت environment variables برسد — cdnctl object-storage bindings create ... --env-prefix S3 — که راه تمیزی برای دادن ذخیره‌سازی مخصوص به یک اپ است. قاعدهٔ کلی: ذخیره‌سازی فایل برای میزبانی و ارائهٔ فایل از طریق CDN؛ object storage وقتی bucket، کلید، دسترسی برنامه‌ای/S3 یا ذخیره‌سازی پشتیبان یک اپ می‌خواهید.

ارائه، cache و purge

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

نکته‌ای که باید با cache روی edge به‌خاطر داشت: وقتی یک فایل را با نسخهٔ تازه بازنویسی می‌کنید، نسخهٔ قدیمی می‌تواند مدتی روی edge cache باقی بماند. اگر فایلی را جایگزین کردید و لازم است تغییر فوری زنده شود، آن را (از پنل یا API) purge کنید تا edge نسخهٔ تازه را بگیرد. یک الگوی رایج برای دورزدن کامل این موضوع این است که یک نسخه در نام فایل یا مسیر بگنجانید — logo.v2.png، یا assets زیر یک build hash — تا فایل تازه URL تازه‌ای داشته باشد و هرگز با نسخهٔ cache‌شده تداخل نکند.

CI و خودکارسازی با cdnctl

چون cdnctl یک ابزار خط‌فرمان واحد است که با token احراز هویت می‌کند، به‌خوبی در CI/CD جا می‌گیرد. یک گام معمول build یک‌بار احراز هویت می‌کند (cdnctl configure --endpoint https://cdn.com.tr --token <token> و cdnctl accounts use <uuid>)، سپس دارایی‌های تازه‌ساخته را پوش می‌کند: cdnctl cp -r ./dist assets/ --force. pipeline شما artifactها را آپلود می‌کند، edge آن‌ها را ارائه می‌دهد و دیگر هیچ‌وقت فایل را دستی کپی نمی‌کنید.

همین روش انتشار یک دانلود تازه، چرخاندن یک asset بازاریابی یا ارسال خروجی یک سایت استاتیک را در هر commit پوشش می‌دهد — همه اسکریپت‌پذیر، همه تکرارپذیر، بدون سرور origin برای زنده نگه‌داشتن.

مردم چه چیزی از ذخیره‌سازی CDN ارائه می‌دهند

تصاویر و رسانه

لوگو، عکس محصول، ویدیو و صدا را روی CDN میزبانی کنید و سریع از edge ارائه دهید — بدون سرور رسانه برای اجرا.

دانلود و نسخه‌های انتشار

نصب‌کننده‌ها، PDF و فایل‌های انتشار را در ذخیره‌سازی بگذارید و لینک‌های دانلود سریع و HTTPS بدهید که زیر تقاضا مقیاس می‌گیرند.

سایت‌های استاتیک و دارایی‌های build

JS، CSS و تصاویر یک build را از CI با cdnctl cp -r پوش کنید و کل بستهٔ استاتیک را از edge ارائه دهید.

پرسش‌های پرتکرار دربارهٔ ذخیره‌سازی فایل روی CDN

برای ارائهٔ فایل از CDN به سرور خودم نیاز دارم؟

نه. با ذخیره‌سازی فایل روی CDN، خود CDN همان origin است — فایل‌ها را در حساب خود آپلود می‌کنید و از edge ارائه می‌شوند. سروری برای اجرا، پچ یا مقیاس‌دهی از سوی شما نیست.

فایل‌ها را چگونه آپلود کنم — پنل یا خط‌فرمان؟

هر دو روی همان ذخیره‌سازی کار می‌کنند. برای آپلود بصری و بدون کد از بخش Files پنل استفاده کنید، یا برای اسکریپت‌کردن از CLI به‌نام cdnctl. cdnctl cp مثل scp کار می‌کند: cdnctl cp ./logo.png images/logo.png برای یک فایل، یا cdnctl cp -r ./dist assets/ برای یک پوشهٔ کامل.

تفاوت ذخیره‌سازی فایل و object storage چیست؟

ذخیره‌سازی فایل ساده‌ترین راه میزبانی و ارائهٔ فایل‌های استاتیک و رسانه از طریق CDN است. object storage سازگار با S3 است: bucket و access key می‌گیرید و می‌توانید از ابزارهای استاندارد S3 استفاده کنید یا یک bucket را به یک اپ متصل کنید. برای ارائهٔ فایل از ذخیره‌سازی فایل استفاده کنید؛ وقتی به bucket، کلید یا دسترسی برنامه‌ای نیاز دارید از object storage.

یک فایل را جایگزین کردم اما فایل قدیمی هنوز نمایش داده می‌شود — چرا؟

فایل‌های ارائه‌شده روی edge cache می‌شوند، پس یک فایل بازنویسی‌شده می‌تواند تا به‌روزرسانی cache نسخهٔ قدیمی را نشان دهد. پس از بازنویسی فایل را purge کنید، یا نسخه‌ای در نام فایل یا مسیر بگنجانید تا نسخهٔ تازه URL تازه‌ای داشته باشد.

آیا URLهای فایل روی HTTPS ارائه می‌شوند؟

بله. فایل‌های ارائه‌شده از طریق CDN، SSL خودکار می‌گیرند، پس URLهای آن‌ها HTTPS است بدون گواهی‌ای که شما مدیریت کنید.