Gunakan Functions and Pages untuk memisahkan konten statis dan dinamis guna mempercepat pemuatan halaman. Situs e-commerce contoh menunjukkan bagaimana Functions and Pages merender halaman di POP tepi untuk waktu pemuatan yang lebih cepat.
Ikhtisar solusi
Untuk memisahkan dan mempercepat konten statis dan dinamis:
Konfigurasikan situs ESA: Tambahkan domain Anda ke ESA untuk akselerasi.
Deploy sumber daya statis: Simpan gambar di OSS dan konfigurasikan nama domain yang dipercepat di ESA.
Deploy sumber daya dinamis: Deploy layanan Python pada server ECS dan konfigurasikan nama domain di ESA untuk mempercepat permintaan dinamis.
Konfigurasikan Functions and Pages: Buat fungsi dan tetapkan domain. Fungsi tersebut merender halaman di POP tepi untuk respons yang lebih cepat.
Sebelum memulai
Ganti nama domain contoh berikut dengan nama domain aktual Anda: www.example.com (origin), shopping.example.com (dipercepat), dan images.example.com (sumber daya statis). Gunakan nama domain aktual Anda sepanjang panduan ini.
1. Konfigurasikan situs
Tambahkan situs Anda untuk mengaktifkan akselerasi.
Di konsol ESA, pilih Websites dan klik Add Website.
Pada halaman Enter Website, masukkan situs Anda, misalnya,
example.com, lalu klik Next.Pada halaman Select Location and DNS Setup, di bagian Location for Acceleration and Protection, pilih wilayah tempat situs Anda memerlukan layanan akselerasi aman. Untuk DNS Setup, pilih CNAME lalu klik Next.
Pada halaman Select Plan, beli New Plans atau pilih Purchased Plans. Ikuti petunjuk di layar untuk menyelesaikan pembelian.
Beli paket baru
Pada halaman New Plans, pilih paket yang sesuai dengan kebutuhan Anda.

Bind paket yang sudah ada
Jika Anda memiliki paket yang sudah ada, pilih paket tersebut pada tab Purchased Plans.

Di ESA console, klik Websites di panel navigasi kiri. Di halaman Manajemen Situs, klik situs target. Di halaman Overview, verifikasi kepemilikan domain Anda.
Salin Record Value dari rekaman TXT.
Login ke konsol penyedia DNS Anda (contoh ini menggunakan Alibaba Cloud) dan tambahkan rekaman TXT dengan parameter berikut:
Type: TXT
Host:
_esaauthValue: tempel nilai verifikasi yang Anda salin (diawali dengan
verify_)Request source: Default
TTL: 10 menit (disarankan)
Bersihkan rekaman TXT yang tidak digunakan agar panjang total rekaman tidak melebihi batas dan mengganggu resolusi DNS.
Di konsol DNS Alibaba Cloud, pilih Public DNS > Authoritative Domain Names dari panel navigasi kiri. Di tab Authoritative Domain Names, temukan nama domain situs target lalu klik DNS Settings.
Di DNS Settings, klik Add Record. Tambahkan rekaman dengan pengaturan berikut lalu klik OK.
Parameter
Contoh nilai
Record type
TXTHost record
_esaauthRecord value
verify_a186***be8(Nilai rekaman yang disediakan di konsol.)TTL
10 menit
Di ESA console, buka halaman ikhtisar situs target lalu klik Verify.
Verifikasi berhasil: Pesan
Verification successfulmengonfirmasi penyelesaian.Verifikasi gagal: Jika muncul
Verification failed, periksa pengaturan DNS lalu klik Verify lagi.
2. Konfigurasikan sumber daya statis
2.1 Siapkan lingkungan dan sumber daya
Login ke konsol OSS, buka halaman Buckets, lalu klik Create Bucket. Masukkan Bucket Name, pertahankan pengaturan default lainnya, lalu klik Create.
Pada contoh ini, Bucket Name diatur ke
website-resources-shoppingdan Region diatur ke China (Hangzhou).Pilih bucket yang telah Anda buat. Di halaman Files, ekstrak kumpulan gambar produk dari File sumber daya lalu unggah gambar-gambar tersebut ke direktori root bucket.
CatatanSimpan sumber daya gambar di direktori root bucket OSS.
2.2 Konfigurasikan domain yang dipercepat untuk sumber daya statis
Di konsol ESA, pilih Websites, lalu di kolom Website, klik situs target.
Di bilah navigasi kiri, klik , lalu tambahkan rekaman DNS berdasarkan Record Type.
Parameter
Contoh nilai
Record Type
CNAMEHostname
imagesProxy Status
Enabled
Record Value
OSS
Access Type
Private Access (STS Temporary Token)
Authorization
Diotorisasi secara default untuk akses akun yang sama.
OSS Bucket
website-resources-shopping.*******.aliyuncs.comOrigin Host
Follow Origin Domain Name
Pilih Image/Video untuk tipe rekaman, lalu klik OK.
Setelah rekaman DNS dibuat, salin Hostname dan Record Value dari halaman wizard konfigurasi CNAME.
Saat menambahkan rekaman di konsol DNS Alibaba Cloud, atur Type ke CNAME - Arahkan nama domain ke nama domain lain, masukkan nilai yang disalin di Host dan Value, pilih Default untuk Request source, dan pertahankan TTL pada 10 menit (disarankan).
Buka konsol DNS Alibaba Cloud. Di panel navigasi kiri, pilih Public DNS > Authoritative Domain Names. Di tab Authoritative Domain Names, temukan nama domain situs target lalu klik DNS Settings.
Di DNS Settings, klik Add Record. Tambahkan rekaman dengan pengaturan berikut lalu klik OK.
Parameter
Contoh nilai
Record type
CNAMEHost record
imagesRecord value
images.example.com.**.*******.comTTL
10 menit
Kembali ke halaman wizard konfigurasi CNAME dari Langkah 4. Di langkah 3. Verify the CNAME record, klik Query. Jika rekaman CNAME telah berlaku, konfigurasi CNAME selesai.
CatatanRekaman CNAME mungkin memerlukan beberapa menit untuk berlaku.
Masukkan
http://<your_accelerated_domain_name>/1.pngdi browser Anda untuk memverifikasi bahwa gambar ditampilkan.CatatanJika muncul error 404, sesuaikan URL agar sesuai dengan path direktori gambar. Contohnya:
http://<your_accelerated_domain_name>/images/1.png.
3. Deploy sumber daya dinamis
3.1 Siapkan lingkungan
Login ke konsol ECS.
Di panel navigasi kiri, pilih Instances & Images > Instances. Di bilah menu atas, pilih wilayah China (Hangzhou).
Di halaman Instances, klik Create Instance. Lalu, buat instance ECS di halaman pembelian.
Parameter | Contoh nilai |
metode penagihan | Pay-As-You-Go |
Wilayah | China (Hangzhou) |
Jaringan dan zona | VPC default dan vSwitch default di zona tersebut |
Tipe instans | ecs.e-c1m1.large (2 vCPU, 2 GiB) |
Image | Pilih Alibaba Cloud Linux dari Public Image. |
Versi image | Alibaba Cloud Linux 3.2104 LTS 64-bit |
Tipe disk sistem | disk cloud ESSD |
Ukuran disk sistem | 40 GiB |
IP publik | Pilih Assign Public IPv4 Address. |
metode penagihan bandwidth | Pay-by-data-transfer |
Bandwidth puncak | 5 Mbps |
security group | Create Security Group (Di Open IPv4 Port/Protocol, pilih |
Pengaturan manajemen | Custom Password (Tentukan password Anda.) |
3.2 Deploy sumber daya dinamis
Login ke konsol ECS.
Di panel navigasi kiri, pilih Instances & Images > Instances. Di bilah menu atas, pilih wilayah China (Hangzhou).
Di halaman Instances, temukan instans target lalu klik ID instans untuk membuka halaman detail instans.
Klik Remote Connection, pilih Connect via Workbench, lalu klik Log On Now. Masukkan kata sandi logon untuk menyelesaikan login.
Unduh kode website dan data produk dari File sumber daya, ekstrak paketnya, lalu unggah kedua file tersebut ke server ECS.
Di file ItemInfo.json, ganti
images.example.comdengan nama domain yang dipercepat yang dikonfigurasi di Bagian 2.2.Pilih File > Open New File Management > Upload File untuk mengunggah kedua file ke server.
Di konsol Workbench, jalankan perintah berikut untuk memulai server HTTP.
cd / # Buka direktori root sistem. nohup python -m http.server 80 & # Mulai layanan HTTP di port 80 di latar belakang.Di browser Anda, masukkan
http://<your_public_ip>/ItemsInfo.jsonuntuk memverifikasi bahwa data produk dinamis dikembalikan.
3.3 Konfigurasikan domain yang dipercepat untuk sumber daya dinamis
Di konsol ESA, pilih Websites. Di kolom Actions situs target, klik ikon lalu pilih DNS Records.
Di panel navigasi kiri, pilih .
Di halaman daftar rekaman, klik Add Record, konfigurasikan parameter, lalu klik Next.
Parameter
Contoh nilai
Record type
A/AAAAHost record
www
Proxy status
Enabled
Record value/origin
10.0.x.x (Alamat IP publik instans ECS target)
TTL
Auto
Pilih API untuk tipe rekaman lalu klik OK.
Setelah rekaman DNS dibuat, salin Hostname dan Record Value dari halaman wizard konfigurasi CNAME.
CatatanBiarkan halaman ini tetap terbuka. Anda akan kembali untuk memverifikasi rekaman CNAME di Langkah 8.
Buka konsol DNS Alibaba Cloud. Di panel navigasi kiri, pilih Public DNS > Authoritative Domain Names. Di tab Authoritative Domain Names, temukan nama domain situs target lalu klik DNS Settings.
Di DNS Settings, klik Add Record. Tambahkan rekaman dengan pengaturan berikut lalu klik OK.
Parameter
Contoh nilai
Record type
CNAMEHost record
wwwRecord value
www.example.com.**.*******.com(Nilai rekaman dari wizard konfigurasi CNAME)TTL
10 menit
Kembali ke halaman wizard konfigurasi CNAME dari Langkah 5. Di langkah 3. Verify the CNAME record, klik Query. Jika rekaman CNAME telah berlaku, konfigurasi CNAME selesai.
CatatanRekaman CNAME mungkin memerlukan beberapa menit untuk berlaku.
4. Konfigurasikan Functions and Pages
4.1 Buat Functions and Pages
Login ke ESA console. Di panel navigasi kiri, pilih .
Klik Create. Untuk metode pembuatan, pilih Function Templates. Pilih templat
Hello Worldlalu klik Next.Masukkan Routine Name, tambahkan deskripsi jika diperlukan, lalu klik Submit.
Tambahkan nama domain untuk Functions and Pages.
Login ke ESA console. Di panel navigasi kiri, pilih .
Di halaman daftar Functions and Pages, klik fungsi target.
Di halaman detail fungsi, beralih ke tab Domain Name lalu klik Add Domain Name. Tetapkan nama domain
shopping.example.comke fungsi edge lalu klik OK.Di area binding domain, temukan nama domain fungsi edge yang baru saja Anda buat. Di kolom Actions, klik View DNS Records. Di halaman manajemen rekaman DNS, salin nilai CNAME untuk nama domain fungsi edge.
Masuk ke Konsol Alibaba Cloud DNS. Di panel navigasi kiri, pilih Public DNS > Authoritative Domain Names. Pada tab Authoritative Domain Names, temukan nama domain situs target, lalu klik DNS Settings.
Di DNS Settings, klik Add Record. Tambahkan rekaman dengan pengaturan berikut lalu klik OK.
Parameter
Deskripsi
Contoh nilai
Record type
Pilih tipe rekaman DNS.
CNAMEHost record
Masukkan rekaman host berdasarkan awalan domain.
shoppingRecord value
Masukkan nilai CNAME dari domain fungsi edge.
shopping.example.com.**.*******.comTTL
Siklus pembaruan DNS. Pertahankan nilai default.
10 menit
Segarkan halaman rekaman DNS dan periksa apakah CNAME Status dari nama domain fungsi edge berubah dari To be configured menjadi Configured.
CatatanRekaman CNAME mungkin memerlukan beberapa menit untuk berlaku.
4.2 Konfigurasikan sertifikat edge
ESA mengenkripsi permintaan client-ke-POP dengan SSL/TLS. Untuk praktik ini, ajukan sertifikat gratis. Konfigurasikan sertifikat edge.
Di ESA console, klik Websites di panel navigasi kiri, lalu klik situs target.
Di halaman manajemen situs target, pilih SSL/TLS > Edge Certificates dari panel navigasi kiri.
Di bagian Edge Certificates, temukan SSL/TLS lalu klik sakelar untuk mengaktifkannya.
Di bagian Edge Certificates, temukan Certificate Management lalu klik Apply for Free Certificate. Konfigurasikan parameter lalu klik OK.
Parameter
Deskripsi
Contoh nilai
Certificate authority
Gunakan nilai default.
Let's EncryptCertificate domain names
Masukkan nama domain statis, dinamis, dan fungsi edge yang dikonfigurasi pada langkah sebelumnya.
images.example.comwww.example.comshopping.example.comPenerbitan sertifikat memerlukan waktu 5 hingga 10 menit. Sertifikat kemudian secara otomatis dideploy ke ESA.
4.3 Konfigurasikan protokol dan port origin
ESA menggunakan HTTPS untuk pengambilan asal secara default. Karena origin pada contoh ini tidak mendukung HTTPS, konfigurasikan ESA untuk menggunakan HTTP sebagai gantinya.
Di ESA console, klik Websites di panel navigasi kiri, lalu klik situs target.
Di halaman manajemen situs target, pilih di panel navigasi kiri.
Di bagian Origin Certificates, temukan Origin Protocol and Port lalu klik Configure. Konfigurasikan parameter lalu klik OK.
Parameter
Deskripsi
Contoh nilai
Origin protocol
Pilih
HTTPkarena origin tidak mendukung HTTPS.HTTPHTTP port
Pertahankan nilai default
80.80
4.4 Uji dan publikasikan fungsi edge
Login ke ESA console, lalu di panel navigasi kiri, pilih .
Di halaman daftar Functions and Pages, klik fungsi target.
Di halaman detail fungsi, beralih ke tab Code. Ganti variabel
urlPrefixdengan nama domain origin Andawww.example.com, lalu klik Save.// Komentar: Fungsi ini menangani permintaan HTTP dan merender halaman HTML dengan data dinamis. async function handleRequest(request) { const urlPrefix = 'www.example.com'; // URL permintaan file HTML. const staticDataUrl = 'http://' + urlPrefix + '/index.html'; // URL permintaan data dinamis. const dynamicDataUrl = 'http://' + urlPrefix + '/ItemsInfo.json'; // Gunakan Cache API untuk mengambil data kerangka halaman. const htmlCache = await cache.get(staticDataUrl); let html = ''; if (htmlCache === undefined) { const htmlResponse = await fetch(staticDataUrl); html = await htmlResponse.text(); await cache.put(staticDataUrl, new Response(html, { headers: [["cache-control", "max-age=1000"]] })); } else { html = await htmlCache.text(); } // Ambil data produk dari server origin. const jsonResponse = await fetch(dynamicDataUrl); const json = await jsonResponse.json(); // Bungkus data dinamis ke dalam blok div. let itemsHtml = ''; for (const item of json.data) { const itemHtml = ` <div class="bg-white overflow-hidden shadow rounded-lg"> <div class="p-4"> <img class="h-48 w-full object-cover" src="${item.image}" alt="Gambar placeholder produk"> <h3 class="mt-2 text-gray-900 text-sm font-medium">${item.title}</h3> <div class="mt-4"> ${item.originalPrice} </div> <div class="mt"> ${item.discountPrice} </div> </div> </div>`; itemsHtml += itemHtml; } // Ganti #(itemsHtml) di HTML statis dengan data dinamis. const finalHtml = html.replace("#(itemsHtml)", itemsHtml); // Kembalikan halaman HTML yang dirender di POP ke browser. return new Response(finalHtml, { headers: { "content-type": "text/html;charset=UTF-8", }, }); } export default { async fetch(request) { return handleRequest(request); }, };Klik Request di pojok kanan atas untuk menjalankan pengujian lokal. Log eksekusi muncul di bagian kiri bawah.
Setelah pengujian berhasil, klik One-click Release untuk mendeploy kode ke produksi.
5. Verifikasi dan bersihkan sumber daya
5.1 Verifikasi solusi
Setelah dipublikasikan, verifikasi hasilnya:
Buka browser dan akses domain fungsi edge (misalnya, https://<your_edge_function_domain_name>).
Verifikasi bahwa halaman dimuat dan data produk dirender secara dinamis.
Gunakan alat developer browser untuk memastikan bahwa sumber daya statis di-cache dan data dinamis dipercepat oleh POP.
Jika verifikasi berhasil, halaman menampilkan saluran pakaian wanita pusat perbelanjaan: kotak pencarian di bagian atas, tab navigasi kategori seperti Dresses, T-shirts, Jeans, Coats, dan Sportswear, serta kisi kartu produk. Setiap kartu menampilkan gambar produk, nama produk, harga asli yang dicoret, dan harga promosi berwarna merah. Hal ini menunjukkan bahwa data produk dirender secara dinamis di POP tepi.
Di panel Network DevTools, pilih permintaan sumber daya statis seperti gambar lalu periksa Response Headers. Kolom berikut mengonfirmasi cache hit CDN:
X-Site-Cache-Status: nilainyaHIT, yang menunjukkan bahwa sumber daya disajikan dari cache POP tepi.X-Swift-Cachetime: nilainya3600, yang menunjukkan bahwa cache berlaku selama 3600 detik.X-Swift-Savetime: waktu saat sumber daya ditulis ke cache.
5.2 Bersihkan sumber daya (Opsional)
Jika Anda tidak lagi memerlukan sumber daya ini, hapus untuk menghindari biaya:
Hapus situs.
Login ke ESA console. Di panel navigasi kiri, klik Websites. Di halaman daftar Manajemen Situs, klik Delete di kolom Actions.
Hapus fungsi edge.
Di ESA console, pilih di panel navigasi kiri. Di halaman daftar Functions and Pages, klik fungsi target. Di tab Basic Information, klik Delete Routine.
Lepaskan instance ECS.
Login ke konsol ECS. Di halaman Instance, temukan instance target. Di kolom Actions, pilih Release lalu ikuti petunjuk di layar untuk melepaskan instance.
Hapus security group.
Login ke konsol ECS. Di halaman Security Groups, temukan security group target. Di kolom Actions, klik Delete lalu ikuti petunjuk di layar untuk menghapus security group.
File sumber daya
Kumpulan gambar produk | |
Kode website dan data produk |