Amazon CloudFront CDN تسريع المبادئ التعليمية والتكوين: "نقل" موقع الويب الخاص بك إلى باب المستخدم
تخيل أنك فتحت مركزًا تجاريًا ساخنًا عبر الإنترنت مع خوادم في الخارج. في أحد الأيام ، قام مستخدم في طوكيو بالنقر فوق موقع الويب الخاص بك وطلب عبور المحيط الهادئ وعبور العديد من عقد الكابلات الضوئية البحرية الدولية للوصول إلى الخادم الخاص بك. بعد هذه الرحلة "لمسافات طويلة" ، استغرق تحميل صفحة الويب 5 ثوانٍ كاملة.
اليوم ، "يتم تحميل صفحة الويب لأكثر من 3 ثوانٍ ، ويفقد المستخدمون نصفهم" ، هذا التأخير قاتل.
كيف يتم حلها ؟ الجواب هو
CDN (شبكة توزيع المحتوى)
. في مجال الحوسبة السحابية ، تعد Amazon CloudFront هي "البريد السريع المتسارع" الأعلى. اليوم سنستخدم اللغة العامية لتعميق مبدأ تسريع CloudFront تمامًا ، ونأخذك إلى مجموعة من التكوينات القتالية الفعلية.
1. المبدأ الأساسي: كيف تقضي CloudFront على التأخير ؟
إذا تم تلخيص المنطق الأساسي لـ CloudFront في جملة واحدة ، فهو:
استخدم المساحة لتبادل الوقت و "استنساخ" الموارد الثابتة إلى أقرب مكان للمستخدم.
لتحقيق ذلك ، نسجت أمازون شبكة ضخمة في جميع أنحاء العالم ، مدعومة بثلاثة مفاهيم أساسية:
[محطة المصدر (S3/EC2)] <---> [ذاكرة التخزين المؤقت الإقليمية (Edge)] <---> [موقع Edge] <---> [المستخدم النهائي]
Origin: حيث تقوم بتخزين بيانات موقع الويب الأصلي ، مثل دلو Amazon S3 أو خادم EC2.
موقع Edge: مراكز البيانات المنتشرة في المدن الكبرى حول العالم (مئات النقاط حول العالم). لا يقومون بتشغيل رموز أعمال معقدة ، بل يقومون فقط بتخزين واحد (بيانات التخزين المؤقت).
Cache الإقليمي Edge: "مستودع كبير" بين محطة المصدر ومحطة الحافة. عندما تكون المحطة الهامشية غير متوفرة ، اذهب إلى هنا أولاً للعثور عليها ، بدلاً من تزعج محطة المصدر مباشرة ، مما يقلل الضغط على محطة المصدر.
ماذا يحدث وراء ذلك عندما يزور المستخدم موقع على شبكة الانترنت مع تكوين CloudFront ؟
الوصول القريب: يبدأ المستخدمون في طوكيو طلبًا ، وتوجه CloudFront الطلب مباشرة إلى موقع الحافة المحلي في طوكيو من خلال تحليل DNS الذكي.
Cache Hit (Cache Hit): إذا كان موقع الحافة هذا يخزن الصور التي سيشاهدها المستخدم (مثل logo.png) ، فسوف ينقل الصورة مباشرة إلى المستخدم في ثوانٍ. قد يستغرق الأمر بضع مللي ثانية فقط ، ويتم فتح الموقع في ثوانٍ!
Cache Miss: إذا تمت زيارة هذا الموقع لأول مرة ، بدون هذه الصورة ، فسوف "يطلب البضائع" على الفور من الشبكة الأساسية داخل Amazon إلى المحطة المصدر. بعد الحصول على الصورة ، سيتم إرسالها إلى المستخدم أثناء حفظ نسخة (ذاكرة التخزين المؤقت) ، وهو مناسب للشرق التالي
يأتي مستخدمو بكين للحصول عليها.
بالإضافة إلى تسريع الملفات الثابتة (الصور ، CSS ، JS) ، يمكن لـ CloudFront أيضًا تسريع
الطلبات الديناميكية
(مثل تسجيل الدخول ، واجهة API). على الرغم من أنه لا يمكن تخزين البيانات الديناميكية مؤقتًا ، إلا أنها تسمح للمستخدمين بالدخول من خلال أقرب موقع حافة
شبكة العمود الفقري العالمية للكابلات الضوئية ذاتية البناء AWS
. هذا مثل قيادة السيارة على "طريق سريع خاص عالي المستوى" ، وتجنب الازدحام والالتفاف على الشبكة العامة تمامًا.
2. البرنامج التعليمي القتالي: قم بتكوين أول توزيع لـ CloudFront
قل فقط لا تمارس المقبض المزيف. فيما يلي نأخذ المشهد الأكثر شيوعًا-"استخدام CloudFront لتسريع موقع الويب/الصور الثابتة في دلو Amazon S3" كمثال ، خذ عملية التكوين الكاملة.
الخطوة الأولى: إنشاء التوزيع (Distribution)
قم بتسجيل الدخول إلى وحدة التحكم في إدارة AWS ، أدخل CloudFront في شريط البحث ، وانقر للدخول.
اضغط على زر Create distribution (إنشاء توزيع) في الزاوية اليمنى العليا.
الخطوة الثانية: تكوين إعدادات المحطة المصدر
Origin domain: انقر على مربع الإدخال ، ستقوم AWS تلقائيًا بإدراج الموارد ضمن حسابك الحالي. اختر دلو S3 الذي أعدته (على سبيل المثال ، my-website-bucket.s3.amazonaws.com).
Origin Access (حقوق الوصول إلى المصدر): يوصى بشدة باختيار Origin للوصول control settings (OAC).💡دليل تجنب الحفرة: يقوم العديد من المبتدئين بتعيين برميل تخزين S3 على أنه "مفتوح تمامًا" من أجل راحة الصورة. هذا خطير جدا! بعد اختيار OAC ، يمكن أن يظل دلو S3 الخاص بك خاصًا ، فقط CloudFront لديه الحق في قراءته. لا يمكن للمستخدمين تجاوز CDN مباشرة لتمرير حركة مرور S3 الخاصة بك ، آمنة وتوفير المال.
انقر على Create new OCI لإنشاء سياسة تحكم مباشرة باستخدام التكوين الافتراضي الموصى به.
الخطوة الثالثة: تكوين السلوك الافتراضي (Default cache behavior)
يحدد هذا الجزء كيفية تعامل CDN مع طلبات المستخدمين:
سياسة بروتوكول Viewer: حدد Redirect HTTP إلى HTTPS. يعد أمان موقع الويب الحالي أول من يقوم تلقائيًا بتحويل حركة مرور HTTP غير الآمنة إلى HTTPS آمن.
Allowed HTTP methods (طريقة HTTP المسموح بها): إذا كان مجرد تسريع ثابت ، يمكنك تحديد GET ، HEAD ؛ إذا كان مزيجًا ديناميكيًا من API ، حدد GET ، HEAD ، OPTIONS ، PUT ، POST ، PATCH ، DELETE.
Cache key and
Origin requests (مفاتيح التخزين المؤقت وطلبات المصدر) حدد CachingOptimized (تحسين ذاكرة التخزين المؤقت) في سياسة التخزين المؤقت. هذه هي أفضل ممارسة للتكوين الرسمي لـ AWS. سيتم تشغيل ضغط Gzip و Brotli تلقائيًا لتقليل حجم ملف الكود الخاص بك بأكثر من 70 ٪ وسيكون النقل أسرع.
الخطوة الرابعة: إعداد الإعدادات ونطاقات بديلة
فئة السعر: إذا كان عملك موجهًا عالميًا ، فاستخدم جميع المواقع الهامشية. إذا كانت الميزانية محدودة وكان المستخدمون في أوروبا والولايات المتحدة بشكل أساسي ، يمكنك اختيار فئة أرخص.
اسم Alternate domain name (CNAME): أدخل اسم المجال الجميل الخاص بك ، مثل cdn.yourdomain.com.
Custom SSL certificate: نظرًا لاستخدام اسم المجال الخاص بك ، فأنت بحاجة إلى شهادة. انقر على شهادة Request أدناه لتقديم طلب للحصول على شهادة SSL مجانًا من خلال AWS Certificate Manager (ACM). تحديثه بعد التطبيق الناجح على الصفحة.
Default root object (كائن الجذر الافتراضي): إذا كان موقعًا ثابتًا ، فاملأ index.html.
بعد التحقق من صحتها ، انقر على الجزء السفلي
Create distribution
. إنتهيت! AWS تبدأ في نشر التوزيع الخاص بك في جميع أنحاء العالم ، وتصبح الحالة
Deploying
. يستغرق حوالي 3 إلى 5 دقائق عندما تصبح الحالة
Enabled
عندما تحصل على شكل
D111111abcdef8.cloudfront.net
اسم المجال المعجل الرسمي.
الخطوة 5: استكمال مهم-تحديث استراتيجية دلو التخزين S3
تذكر عندما اخترنا OAC في الخطوة الثانية ؟ في هذا الوقت ، أنشأت CloudFront أذونات ، ولكن عليك الذهاب إلى دلو S3 "لفتح الباب لالتقاط العملاء".
في CloudFront إنشاء صفحة نصائح ناجحة ، سترى تلميح أصفر لافت للنظر ، انقر على Copy policy (استراتيجية النسخ).
توجه إلى دلو S3 الخاص بك ، اضغط على علامة التبويب Permissions (أذونات).
ابحث عن سياسة Bucket (استراتيجية الدلو) ، وانقر فوق تحرير ، ونشر رمز JSON الذي تم نسخه للتو ، وحفظه.
الآن ، انتقل إلى مزود خدمة اسم المجال الخاص بك (مثل GoDaddy و Alibaby و DNSPod) ووضع اسم المجال الفرعي الخاص بك (مثل
Cdn.yourdomain.com
) افعل ذلك
سجلات CNAME
، يشير إلى تلك التي أعطتها لك CloudFront
. Cloudfront.net
اسم المجال.
3. ضبط متقدم ومهارات القرصنة الموفرة للمال
إذا تم تهيئته ، فسوف يمر فقط. إذا كنت ترغب في استخدامه بسرعة وتوفير المال في العمل الفعلي ، يجب أن تعرف النقاط الثلاث التالية:
1. فن ذاكرة التخزين المؤقت (Invalidation)
عندما تقوم بتحديث صورة أو ملف JS على موقع الويب الخاص بك ، ولم تنته صلاحية ذاكرة التخزين المؤقت في CloudFront (لم تنتهي صلاحية TTL) ، لا يزال المستخدم القديم يرى الإصدار القديم.
حل العنف: انتقل إلى علامة التبويب Invalidations في وحدة تحكم CloudFront ، وقم بإنشاء مهمة تحديث ، أو أدخل/* (تحديث الموقع بأكمله) أو/الصور/*. سيؤدي ذلك إلى إجبار المواقع العالمية على حذف ذاكرة التخزين المؤقت والعودة إلى المصدر.
الحل الأنيق (موصى به): أضف رقم الإصدار أو ملف Hash إلى هندسة الواجهة الأمامية. على سبيل المثال ، عند تحديث الصورة ، لا يتم تغطية logo.png ، ولكن يتم تسميتها logo_v2.png. بهذه الطريقة ، لا تحتاج إلى تحديث ذاكرة التخزين المؤقت يدويًا ، ولا يتم إبطال ذاكرة التخزين المؤقت القديمة ، ويتم نقل الطلب الجديد تلقائيًا إلى ملف جديد ، وهو أمر ودود للغاية للمحطة المصدر.
2. احذر من انهيار ذاكرة التخزين المؤقت ومعدل العودة إلى المصدر
الشرط الأساسي لـ CDN لمساعدتك في توفير المال هو
معدل إصابة ذاكرة التخزين المؤقت مرتفع
. إذا كان يجب إعادة كل طلب إلى المحطة المصدر للحصول على البيانات ، فسيصبح CDN زخرفة ، وستتحمل رسومين إضافيين للتدفق (من محطة المصدر إلى CDN إلى المستخدم).
حاول ألا تحتوي على Query String (مثل الطابع الزمني) مع تغييرات متكررة في مفتاح التخزين المؤقت ؟ T = 123456). سيؤدي هذا إلى اعتبار CDN أن كل طلب هو ملف جديد تمامًا ، مما يؤدي إلى عودة مجنونة إلى المصدر.
3. استخدام CloudFront Functions للتعامل مع منطق الحافة
في بعض الأحيان تريد عرض صفحات بلغات مختلفة للمستخدمين في بلدان مختلفة ، أو إعادة كتابة عنوان URL. في الماضي ، كان يجب كتابة هذه القواعد في خادم (مثل Nginx). الآن يمكنك الاستفادة من CloudFront
الحوسبة الحافة (Functions / Lambda @ Edge)
. قم بتشغيل بضعة أسطر من كود JavaScript البسيط مباشرة على موقع الحافة ، ومعالجة المتطلبات قبل إرسال الطلب إلى المحطة المصدر ، ويمكن أن ترتفع السرعة بسرعة ، ويمكن أن توفر الكثير من تكاليف حساب الخادم.
خاتمة
في عصر الإنترنت الحالي ، حيث يبدو أن التأخير لمدة ثانية واحدة طويل ، فإن Amazon CloudFront ليس فقط مكونًا تقنيًا ، ولكنه أيضًا "خندق" لتجربة المستخدم.
من خلال توزيع الموارد بشكل معقول على المواقع الهامشية في جميع أنحاء العالم ، لا يمكن أن يساعد موقع الويب الخاص بك على وضع الأجنحة وتحقيق الافتتاح في ثوانٍ فحسب ، بل يمكن أيضًا أن يكون بمثابة درع قوي لمنع الضغط المتزامن الشامل لخادم المصدر الخاص بك. فقط اتبع خطوات هذه المقالة خطوة على OAC
في كل حفرة من الأذونات واستراتيجيات التخزين المؤقت ، ستجد أن التسارع على مستوى العالم الذي يبدو طويل القامة هو في الواقع أكثر من عشر دقائق من جهد التكوين.
