Prinsip pecutan Amazon CloudFront CDN dan tutorial konfigurasi: "Pindahkan" laman web anda ke pintu pengguna
Bayangkan anda membuka pusat membeli-belah dalam talian yang popular dengan pelayan di luar negara. Suatu hari, seorang pengguna di Tokyo mengklik laman web anda dan meminta untuk menyeberangi Lautan Pasifik dan melalui beberapa nod kabel optik dasar laut antarabangsa untuk sampai ke pelayan anda. Pelayan akan kembali dengan cara yang sama setelah diproses. Dalam perjalanan "perjalanan jarak jauh" ini, laman web mengambil masa 5 saat untuk dimuat.
Hari ini, ketika "halaman web dimuat selama lebih dari 3 saat, pengguna akan kehilangan separuh", kelewatan ini membawa maut.
Bagaimana menyelesaikannya? Jawapannya adalah
CDN (Rangkaian Pengedaran Kandungan)
。 Dalam bidang pengkomputeran awan, Amazon CloudFront adalah "Accelerated Express Mail" teratas. Hari ini kita akan menggunakan vernakular untuk memahami sepenuhnya prinsip pecutan CloudFront, dan membawa anda untuk menyelesaikan satu set konfigurasi pertempuran sebenar.
1. Prinsip teras: Bagaimana CloudFront menghilangkan kelewatan?
Sekiranya anda meringkaskan logik inti CloudFront dalam satu ayat, itu adalah:
Gunakan ruang untuk masa dan "klon" sumber statik ke tempat yang paling dekat dengan pengguna.
Untuk mencapai ini, Amazon telah menenun rangkaian besar di seluruh dunia, yang disokong oleh tiga konsep teras:
[Stesen sumber (S3/EC2)] <---> [Regional Edge] <---> [Edge Location] <---> [Pengguna Akhir]
Origin: Di mana anda menyimpan data laman web asal, seperti baldi Amazon S3 atau pelayan EC2.
Edge Location: Digunakan di pusat data (beratus-ratus mata di seluruh dunia) di bandar-bandar utama di seluruh dunia. Mereka tidak menjalankan kod perniagaan yang kompleks, tetapi hanya melakukan satu perkara-menyimpan (data cache).
Cache Edge Regional: "gudang besar" antara stesen sumber dan stesen tepi. Apabila laman web tepi kehabisan stok, pergi ke sini untuk mencarinya terlebih dahulu, dan bukannya secara langsung mengganggu stesen sumber untuk mengurangkan tekanan pada stesen sumber.
Apa yang berlaku di sebalik pengguna melawat laman web yang dikonfigurasikan dengan CloudFront?
Akses terdekat: Pengguna di Tokyo memulakan permintaan, dan CloudFront secara langsung mengarahkan permintaan ke laman web pinggiran tempatan Tokyo melalui resolusi DNS pintar.
Cache Hit: Sekiranya laman web tepi ini hanya menyimpan gambar yang ingin dilihat oleh pengguna (seperti logo.png), ia akan menghantar gambar secara langsung kepada pengguna dalam beberapa saat. Mungkin hanya memerlukan beberapa milisaat, dan laman web dibuka dalam beberapa saat!
Cache Miss: Sekiranya laman web ini diakses untuk pertama kalinya, tanpa gambar ini, ia akan segera "meminta barang" dari laman web tulang belakang dalaman Amazon ke laman web sumber. Setelah mendapat gambar, ia akan dihantar kepada pengguna. Simpan salinan (cache) anda sendiri untuk memudahkan perkara seterusnya
Pengguna Beijing datang untuk mendapatkannya.
Selain mempercepat fail statik (gambar, CSS, JS),CloudFront juga dapat mempercepat
Permintaan dinamik
(Seperti log masuk, antara muka API). Walaupun data dinamik tidak dapat disimpan dalam cache, ia membolehkan pengguna masuk melalui laman tepi terdekat
Rangkaian tulang belakang kabel optik global AWS yang dibina sendiri
。 Ini seperti memandu kereta di "lebuh raya khas standard tinggi", sepenuhnya mengelakkan kesesakan dan jalan memutar rangkaian awam.
2. Tutorial praktikal: konfigurasikan pengedaran CloudFront pertama anda
Hanya bercakap dan tidak berlatih pegangan palsu. Di bawah ini kami mengambil senario yang paling biasa-"Gunakan CloudFront untuk mempercepat laman web/gambar statik di baldi Amazon S3" sebagai contoh, dan melalui proses konfigurasi yang lengkap.
Langkah Pertama: Buat Pengedaran (Distribution)
Log masuk ke konsol pengurusan AWS, masukkan CloudFront di bar carian, dan klik untuk masuk.
Klik butang Buat Distribution di sudut kanan atas.
Langkah 2: Konfigurasikan Tetapan Asal
Domain asal (nama domain sumber): Klik kotak input, AWS akan menyenaraikan sumber secara automatik di bawah akaun semasa anda. Pilih baldi S3 yang disediakan (contohnya my-website-bucket.s3.amazonaws.com).
Akses Asal (akses sumber): Sangat disyorkan untuk memilih tetapan kawalan Asal (OAC).💡Panduan Mengelakkan Lubang: Banyak pemula menetapkan baldi S3 "terbuka sepenuhnya" untuk kemudahan. Ia sangat berbahaya! Selepas memilih OAC, baldi S3 anda boleh disimpan secara peribadi, dan hanya CloudFront yang berhak membacanya. Pengguna tidak dapat memintas CDN dan secara langsung meleret lalu lintas S3 anda, yang selamat dan menjimatkan wang.
Klik Buat OCI baru dan gunakan konfigurasi cadangan lalai secara langsung untuk membuat strategi kawalan.
Langkah 3: Konfigurasikan tingkah laku lalai (Default cache behavior)
Bahagian ini menentukan bagaimana CDN memproses permintaan pengguna:
Policy protocol Viewer (dasar protokol penonton): Pilih Redrect HTTP ke HTTPS. Keselamatan laman web semasa adalah yang pertama, secara automatik mengubah lalu lintas HTTP yang tidak selamat menjadi HTTPS yang selamat.
Kaedah HTTP Tersedia (kaedah HTTP yang dibenarkan): Sekiranya hanya pecutan statik, pilih GET, HEAD; jika ia adalah pencampuran API dinamik, pilih GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE.
Kunci Cache dan
Kemas kini asal (kunci cache dan permintaan sumber): Disarankan untuk mengekalkan tetapan semula cache dan asal lalai. CachingOptimized (pengoptimuman cache) dipilih dalam dasar Cache (dasar cache). Ini adalah amalan terbaik yang dikonfigurasikan secara rasmi oleh AWS. Ia secara automatik akan menghidupkan pemampatan Gzip dan Brotli, mengurangkan jumlah fail kod anda lebih dari 70% dan memindahkan lebih cepat.
Langkah 4: Menetapkan Tetapan dan Nama Domain Alternatif
Kelas harga (kelas harga): Sekiranya perniagaan anda berorientasikan global, pilih Use semua lokasi tepi (gunakan semua laman web tepi). Sekiranya anggaran terhad dan pengguna terutamanya di Eropah dan Amerika, anda boleh memilih kelas yang lebih murah.
Nama domain Alternate (CNAME): Masukkan nama domain cantik anda sendiri, seperti cdn.yourdomain.com.
Custom SSL certificate: Oleh kerana anda menggunakan nama domain anda sendiri, anda memerlukan sijil. Klik pada sijil Request di bawah untuk memohon sijil SSL secara percuma melalui AWS Certificate Manager (ACM). Setelah permohonan berjaya, muat semula halaman dan pilih.
Objek root Default (objek root lalai): Sekiranya ia adalah laman web statik, isikan index.html.
Setelah memeriksa betul, klik di bahagian bawah
Buat distribusi
。 Anda sudah selesai! AWS mula menyebarkan pengedaran anda di seluruh dunia, status menjadi
Deploying
。 Ia mengambil masa kira-kira 3 hingga 5 minit, apabila keadaan menjadi
Enabled
Masa, anda mendapat bentuk
D111111abcdef8.cloudfront.net
Nama domain pecutan rasmi.
Langkah 5: Akhir Penting-Kemas kini Strategi Bucket S3
Ingat ketika kita memilih OAC dalam langkah kedua? Pada masa ini CloudFront telah membuat izin, tetapi anda harus pergi ke baldi S3 untuk "membuka pintu untuk menjemput pelanggan".
Di halaman prompt yang berjaya dibuat di CloudFront, anda akan melihat prompt kuning yang menarik, klik Copy policy (salin strategi).
Pergi ke baldi S3 anda dan klik pada tab Permissions.
Cari policy Bucket (Dasar Bucket), klik Edit, tampal kod JSON yang baru disalin, dan simpan.
Sekarang, pergi ke penyedia perkhidmatan nama domain anda (seperti GoDaddy, Alibaba Cloud, DNSPod) dan masukkan subdomain anda (seperti
Cdn.yourdomain.com
) Jadilah
Rekod CNAME
, Arahkan ke yang diberikan CloudFront kepada anda
. Cloudfront.net
Nama domain.
3. Teknik penggodaman penalaan lanjutan dan penjimatan wang
Konfigurasi hanya berlalu. Sekiranya anda ingin menggunakannya dengan cepat dan menjimatkan wang dalam perniagaan sebenar, anda mesti mengetahui tiga perkara berikut:
1. Seni penyegaran cache
Apabila anda mengemas kini gambar atau fail JS di laman web, dan cache di CloudFront belum tamat (TTL belum tamat), pengguna lama masih melihat versi lama.
Penyelesaian ganas: Pergi ke tab Invalidations konsol CloudFront, buat tugas penyegaran, masukkan/* (muat semula keseluruhan laman web) atau/gambar/*. Ini akan memaksa laman web pinggiran global untuk menghapus cache dan kembali ke sumbernya.
Penyelesaian yang elegan (disyorkan): Tambahkan nombor versi atau fail Hash ke kejuruteraan front-end. Sebagai contoh, semasa mengemas kini gambar, ia tidak menimpa logo.png, tetapi menamakannya logo_v2.png. Dengan cara ini, tidak perlu menyegarkan cache secara manual, cache lama tidak akan dibatalkan, dan permintaan baru akan secara automatik mengambil fail baru, yang sangat ramah dengan stesen sumber.
2. Berhati-hati dengan kerosakan cache dan kadar sumber kembali
Premis CDN untuk membantu anda menjimatkan wang adalah
Kadar hit cache yang tinggi
。 Sekiranya setiap permintaan harus kembali ke stesen sumber untuk mendapatkan data, CDN menjadi paparan, dan anda harus menanggung dua caj data tambahan (stesen sumber ke CDN CDN kepada pengguna).
Cuba jangan memasukkan Query String yang sering berubah (seperti cap waktu? T = 123456). Ini akan menyebabkan CDN berfikir bahawa setiap permintaan adalah fail baru, yang akan mencetuskan pulangan yang gila.
3. Gunakan CloudFront Functions untuk memproses logik tepi
Kadang-kadang anda ingin memaparkan halaman dalam bahasa yang berbeza untuk pengguna di negara yang berbeza, atau menulis semula URL. Pada masa lalu, ini mesti ditulis dalam pelayan (seperti Nginx). Sekarang, anda boleh menggunakan CloudFront
Pengkomputeran tepi (Functions / Lambda @ Edge)
。 Jalankan beberapa baris kod JavaScript minimalis secara langsung di laman web tepi, dan proseskan permintaan sebelum dihantar ke stesen sumber. Kelajuannya terbang dengan cepat dan anda dapat menjimatkan banyak kos pengkomputeran pelayan.
Penutup
Dalam era Internet hari ini di mana kelewatan satu saat nampaknya panjang, Amazon CloudFront bukan hanya komponen teknikal, tetapi juga "parit" pengalaman pengguna.
Dengan menyebarkan sumber secara rasional ke laman web marginal di seluruh dunia, ia bukan sahaja dapat membantu laman web anda memasang sayap dan mencapai pembukaan kedua, tetapi juga seperti perisai yang kukuh, menyekat tekanan serentak yang besar untuk pelayan stesen sumber anda. Ikuti sahaja langkah-langkah artikel ini untuk menginjak OAC
Di setiap lubang kebenaran dan strategi cache, anda akan mendapati bahawa pecutan global yang nampaknya tinggi sebenarnya hanya sepuluh minit kerja konfigurasi.
