Tutorial ini menjelaskan cara menggunakan Functions and Pages Edge Security Acceleration (ESA) untuk mempercepat secara terpisah konten dinamis dan statis pada sebuah website e-commerce sederhana. Panduan ini mencakup prinsip kerja Functions and Pages serta menyediakan langkah-langkah penerapan dan konfigurasinya, yang secara signifikan meningkatkan kecepatan pemuatan website dan pengalaman pengguna.
Ikhtisar solusi
Alur kerja solusi ini:
Konfigurasikan situs: Tambahkan nama domain utama Anda ke ESA.
Menyebarkan aset statis: Simpan sumber daya gambar di Object Storage Service (OSS), lalu konfigurasikan nama domain yang dipercepat di ES untuk mengakses gambar-gambar tersebut.
Sebarkan sumber daya dinamis: Sebarkan layanan Python pada server Elastic Compute Service (ECS). Kemudian, konfigurasikan nama domain di ESA untuk mempercepat permintaan dinamis.
Konfigurasikan Functions and Pages: Siapkan fungsi dan tetapkan nama domain padanya. Fungsi ini merender halaman di edge untuk respons yang lebih cepat.
Sebelum memulai
Topik ini menggunakan www.example.com sebagai nama domain origin, shopping.example.com sebagai nama domain yang dipercepat, dan images.example.com sebagai nama domain resource statis. Pada langkah-langkah berikut, ganti nama domain contoh ini dengan nama domain aktual Anda.
1. Konfigurasikan situs
Tambahkan situs Anda ke ESA untuk mempercepat resource statis dan dinamisnya.
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, pilih wilayah tempat Anda ingin menggunakan layanan ESA di bagian Location for Acceleration and Protection, dan pilih CNAME di bagian DNS Setup, lalu klik Next.
Pada halaman Select Plan, beli New Plans atau pilih Purchased Plans. Ikuti petunjuk di layar untuk menyelesaikan pembelian.
Beli paket baru
Di halaman New Plans, pilih paket yang sesuai dengan kebutuhan Anda.

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

Di konsol ESA, klik Websites di panel navigasi sebelah kiri. Pada halaman manajemen situs, klik situs target. Pada halaman Overview, verifikasi kepemilikan nama domain.
Salin Record Value dari rekaman TXT.

Di konsol DNS Alibaba Cloud, di panel navigasi sebelah kiri, pilih . Pada tab Public Zone, temukan nama domain situs target dan klik Settings.
Pada halaman Settings, klik Add Record. Tambahkan rekaman dengan pengaturan berikut dan klik OK.
Parameter
Contoh nilai
Record type
TXTHostname
_esaauthRecord value
verify_a186***be8(Nilai rekaman yang disediakan di konsol)TTL
10 menit
Di konsol ESA, buka halaman ikhtisar situs target dan klik Verify.
Jika verifikasi berhasil: Jika sistem menampilkan
Verifikasi berhasil, verifikasi telah selesai. Tidak diperlukan tindakan lebih lanjut.Jika verifikasi gagal: Jika sistem menampilkan
Verifikasi gagal, periksa apakah langkah sebelumnya telah dilakukan dengan benar dan sesuaikan pengaturannya. Setelah melakukan penyesuaian, klik Verify lagi.
2. Konfigurasikan resource statis
2.1 Siapkan lingkungan dan resource
Login ke konsol OSS, buka halaman Buckets, lalu klik Create Bucket. Masukkan Bucket Name, pertahankan pengaturan default untuk parameter lainnya, lalu klik OK.

Pilih bucket yang Anda buat pada langkah sebelumnya. Pada halaman daftar file, unggah file. Ekstrak kumpulan citra produk dari File materials for the demo dan unggah citra-citra tersebut ke direktori root bucket.
CatatanDisarankan untuk menempatkan resource citra di direktori root bucket OSS.
2.2 Konfigurasikan nama domain yang dipercepat untuk resource statis
Di Konsol ESA, pilih Websites. Pada kolom Website, klik situs yang dituju.
Di panel navigasi sebelah kiri, pilih dan klik Add Record. Tambahkan rekaman DNS berdasarkan Record Type.
Parameter
Contoh nilai
Record type
CNAMEHostname
imagesProxy Status
Enabled
Record Value
OSS
Access Type
Private Access (Same-account)
Authorization
Secara default, akses pribadi untuk akun yang sama diotorisasi secara otomatis.
OSS Bucket
website-resources-shopping.*******.aliyuncs.comOrigin HOST
Follow origin domain name
TTL
Otomatis
Untuk Record type, pilih Image/Video dan klik OK.
Setelah rekaman DNS dibuat, salin Hostname dan Record Value dari halaman wizard konfigurasi CNAME.

Di konsol DNS Alibaba Cloud, di panel navigasi sebelah kiri, pilih . Pada tab Public Zone, temukan nama domain situs target dan klik Settings.
Pada halaman Settings, klik Add Record. Tambahkan rekaman dengan pengaturan berikut dan klik OK.
Parameter
Contoh nilai
Record Type
CNAMEHostname
imagesRecord Value
images.example.com.**.*******.comTTL
10 menit
Kembali ke halaman wizard konfigurasi CNAME dari Langkah 4. Di 3. Verify the CNAME record, klik Query. Jika rekaman CNAME telah berlaku, konfigurasi selesai.
CatatanRekaman CNAME mungkin memerlukan beberapa menit untuk berlaku. Jika belum berlaku segera, tunggu beberapa menit.
Masukkan
http://{nama domain yang dipercepat}/1.pngdi browser Anda untuk menguji apakah citra ditampilkan.CatatanJika terjadi error 404, ubah URL untuk mengakses file berdasarkan path direktorinya. Misalnya, jika citra Anda berada di direktori images dan bukan di direktori root, path aksesnya adalah
http://{nama domain yang dipercepat}/images/1.png.
3. Sebarkan sumber daya dinamis
3.1 Persiapkan lingkungan
Masuk ke Konsol ECS.
Di panel navigasi sebelah kiri, pilih Instances & Images > Instances. Di bilah menu atas, pilih wilayah tempat instans Anda diterapkan.
Pada halaman Instances, klik Create Instance. Lalu, pada halaman pembelian, buat instans ECS.
Parameter | Contoh nilai |
Metode penagihan | Pay-as-you-go |
Wilayah | China (Hangzhou) |
Jaringan dan zona | VPC default, vSwitch default di zona |
Instance | ecs.e-c1m1.large (2 vCPU, 2 GiB) |
Citra | Dalam Public Image, pilih Alibaba Cloud Linux. |
Versi citra | Alibaba Cloud Linux 3.2104 LTS 64-bit |
Tipe disk sistem | Enterprise SSD (ESSD) |
Ukuran disk sistem | 40 GiB |
Alamat IP publik | Tetapkan Alamat IPv4 Publik. |
Metode penagihan bandwidth | Pay-by-traffic |
Bandwidth puncak | 5 Mbps |
Grup keamanan | Create Security Group (Untuk Enabled IPv4 Port/Protocol, pilih |
Pengaturan Manajemen | Custom Password (Tetapkan kata sandi Anda sendiri.) |
3.2 Sebarkan sumber daya dinamis
Masuk ke Konsol ECS.
Di panel navigasi sebelah kiri, pilih Instances & Images > Instances. Di bilah menu atas, pilih wilayah tempat instans Anda diterapkan.
Di halaman Instances, temukan instans target dan klik ID instans untuk masuk ke halaman detail instans.
Klik Remote Connection, pilih Workbench, lalu klik Sign in now. Masukkan kata sandi logon untuk login.

Unduh kode website dan data produk dari File materials for the demo ke komputer Anda. Setelah mengekstrak paketnya, unggah kedua file tersebut ke server ECS.
Ganti nama domain
images.example.comdalam ItemInfo.json dengan nama domain yang dipercepat untuk resource statis yang Anda konfigurasikan di Langkah 2.2.Kemudian, di pojok kiri atas, pilih File > Open New File Manager > Upload File. Unggah kedua file yang telah diunduh ke server.

Di konsol Workbench, masukkan perintah berikut untuk menjalankan server HTTP sederhana pada instans.
cd / # Buka direktori root. nohup python -m http.server 80 & # Jalankan layanan HTTP di port 80 di latar belakang.Masukkan
http://<IP Publik>/ItemsInfo.jsondi browser Anda untuk memeriksa apakah informasi produk dinamis dikembalikan.
3.3 Konfigurasikan nama domain yang dipercepat untuk resource dinamis
Di konsol ESA, pilih Websites. Di kolom Actions situs target, klik ikon dan pilih DNS Records.
Di panel navigasi sebelah kiri, pilih .
Pada halaman daftar rekaman, klik Add Record. Konfigurasikan parameter seperti pada tabel berikut dan klik Next.
Parameter
Contoh nilai
Record type
A/AAAAHostname
www
Proxy Status
Enable
Record Value
10.0.x.x (Alamat IP publik instans ECS target)
TTL
Otomatis
Untuk Record type, pilih API dan klik OK.
Setelah rekaman DNS dibuat, salin Hostname dan Record Value dari halaman wizard konfigurasi CNAME.
CatatanJangan tutup halaman saat ini. Anda perlu kembali ke halaman ini di Langkah 8 untuk memverifikasi apakah rekaman CNAME telah berlaku.

Di konsol DNS Alibaba Cloud, di panel navigasi sebelah kiri, pilih . Pada tab Public Zone, temukan nama domain situs target dan klik Settings.
Pada halaman Settings, klik Add Record. Tambahkan rekaman dengan pengaturan berikut dan klik OK.
Parameter
Contoh nilai
Record Type
CNAMEHostname
wwwRecord Value
www.example.com.**.*******.com(Record value dari CNAME configuration wizard)TTL
10 menit
Kembali ke halaman wizard konfigurasi CNAME dari Langkah 5. Di 3. Verify the CNAME record, klik Query. Jika rekaman CNAME telah berlaku, konfigurasi selesai.
CatatanRekaman CNAME mungkin memerlukan beberapa menit untuk berlaku. Jika belum berlaku segera, tunggu beberapa menit.
4. Konfigurasikan Functions and Pages
4.1 Buat Functions and Pages
Login ke konsol ESA. Di panel navigasi sebelah kiri, pilih .
Klik Create. Untuk Creation Method, pilih Function Templates. Pilih
Hello Worldtemplat dan klik Next.Masukkan Function Name, tambahkan deskripsi jika diperlukan, lalu klik Submit.
Anda dapat menambahkan titik akhir untuk Functions and Pages.
Login ke konsol ESA. Di panel navigasi sebelah kiri, pilih .
Pada halaman daftar Functions and Pages, klik fungsi target.
Pada halaman detail fungsi, beralih ke tab Domain Name dan klik Add Domain Name. Tetapkan titik akhir
shopping.example.comke fungsi tersebut dan klik OK.Di area pengikatan nama domain, temukan titik akhir fungsi yang Anda buat. Di kolom Actions, klik View DNS Records. Pada halaman manajemen rekaman DNS, salin nilai CNAME dari titik akhir fungsi tersebut.

Di konsol DNS Alibaba Cloud, di panel navigasi sebelah kiri, pilih . Pada tab Public Zone, temukan nama domain situs target dan klik Settings.
Pada halaman Settings, klik Add Record, lalu tambahkan catatan dengan pengaturan berikut dan klik OK.
Parameter
Deskripsi
Contoh nilai
Record Type
Pilih tipe ke mana nama domain mengarah.
CNAMEHostname
Masukkan rekaman host berdasarkan awalan nama domain.
shoppingRecord Value
Masukkan nilai CNAME yang sesuai dengan titik akhir fungsi.
shopping.example.com.**.*******.comTTL
Periode pembaruan nama domain. Pertahankan nilai default.
10 menit
Segarkan halaman rekaman DNS dan periksa apakah Status CNAME untuk titik akhir fungsi berubah dari To Be Configured menjadi Configured.
CatatanRekaman CNAME mungkin memerlukan beberapa menit untuk berlaku. Jika tidak segera berlaku, tunggu beberapa menit.
4.2 Konfigurasikan sertifikat tepi
ESA mendukung enkripsi HTTPS. Anda dapat mengonfigurasi sertifikat SSL di ESA dan mengaktifkan fitur SSL/TLS untuk mengenkripsi transmisi data antara klien dan POP ESA. Untuk solusi ini, Anda dapat meminta sertifikat gratis. Untuk informasi selengkapnya, lihat Konfigurasikan sertifikat edge.
Di konsol ESA, klik Websites di sebelah kiri. Pada halaman manajemen situs, klik situs target.
Pada halaman manajemen situs target, di panel navigasi sebelah kiri, pilih .
Di bagian Edge Certificates, temukan SSL/TLS dan aktifkan sakelarnya.

Di bagian Edge Certificates, temukan Certificate Management dan klik Apply for Free Certificate. Konfigurasikan parameter seperti pada tabel berikut dan klik OK.
Parameter
Deskripsi
Contoh nilai
Certification authority
Pertahankan nilai default.
Let's EncryptCertificate domain names
Masukkan nama domain resource statis, nama domain resource dinamis, dan titik akhir fungsi dari langkah-langkah sebelumnya.
images.example.comwww.example.comshopping.example.comPengajuan sertifikat gratis memerlukan waktu sekitar 5 hingga 10 menit. Setelah sertifikat diterbitkan, sertifikat tersebut secara otomatis diterapkan ke platform ESA. Tidak diperlukan operasi manual.
4.3 Konfigurasikan protokol asal dan port
Setelah Anda mengonfigurasi sertifikat SSL, ESA secara default menggunakan protokol yang sama dengan permintaan klien (HTTPS) untuk pengambilan asal. Namun, server origin dalam demo ini tidak mendukung HTTPS, sehingga menyebabkan permintaan HTTPS ke server origin gagal. Oleh karena itu, Anda harus menentukan HTTP sebagai protokol origin di ESA.
Di konsol ESA, klik Websites di sebelah kiri. Pada halaman manajemen situs, klik situs target.
Pada halaman manajemen situs target, di panel navigasi sebelah kiri, pilih .
Di bagian Origin Certificates, temukan Origin Protocol and Port dan klik Configure. Konfigurasikan parameter seperti pada tabel berikut dan klik OK.
Parameter
Deskripsi
Contoh nilai
Origin protocol
Karena server asal tidak mendukung HTTPS, pilih
HTTP.HTTPHTTP port
Pertahankan nilai default
80.80
4.4 Uji dan publikasikan fungsi
Login ke konsol ESA. Di panel navigasi kiri, pilih .
Pada halaman daftar Functions and Pages, klik fungsi target.
Pada halaman detail fungsi, beralih ke tab Code. Di editor kode, ganti kode yang ada dengan kode JavaScript berikut. Dalam kode baru, ganti variabel
urlPrefixdengan nama domain originwww.example.com. Lalu, klik Save.async function handleRequest(request) { const urlPrefix = 'www.example.com'; // The request URL for the HTML file const staticDataUrl = 'http://' + urlPrefix + '/index.html'; // The request URL for the dynamic data const dynamicDataUrl = 'http://' + urlPrefix + '/ItemsInfo.json'; // Use the Cache API to query the page skeleton data 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(); } // Fetch the product data from the origin server const jsonResponse = await fetch(dynamicDataUrl); const json = await jsonResponse.json(); // Encapsulate the dynamic data into div blocks 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="Placeholder image of a product"> <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; } // Replace #(itemsHtml) in the static HTML with the dynamic data const finalHtml = html.replace("#(itemsHtml)", itemsHtml); // Return the HTML page rendered on the POP to the browser return new Response(finalHtml, { headers: { "content-type": "text/html;charset=UTF-8", }, }); } export default { async fetch(request) { return handleRequest(request); }, };Di editor kode, klik Request di pojok kanan atas untuk melakukan pengujian lokal. Log akan ditampilkan di bagian kiri bawah editor.
Setelah pengujian lokal berhasil, klik One-click Release untuk menerapkan kode ke lingkungan produksi.
5. Verifikasi pengaturan dan bersihkan resource
5.1 Verifikasi pengaturan
Setelah Anda mempublikasikan fungsi, verifikasi hasilnya dengan cara berikut:
Buka browser dan akses titik akhir fungsi yang Anda buat di Langkah 4.1 (https://<titik akhir fungsi Anda>).
Periksa apakah halaman dimuat dan apakah informasi produk dirender secara dinamis.
Gunakan alat developer di browser Anda untuk melihat permintaan jaringan. Pastikan resource statis disajikan dari cache dan data dinamis dipercepat melalui POP.


5.2 (Opsional) Bersihkan sumber daya
Untuk mencegah biaya berkelanjutan, Anda harus menghapus resource dalam urutan tertentu setelah menyelesaikan tutorial ini.
Hapus pengaturan POP akselerasi.
Login ke konsol ESA. Di panel navigasi sebelah kiri, klik Websites. Pada halaman manajemen situs, temukan situs yang ingin Anda hapus dan klik Delete di kolom Actions.
Hapus fungsi tepi.
Di konsol ESA, di panel navigasi sebelah kiri, pilih . Pada halaman Functions and Pages, klik fungsi target. Pada tab Basic Information, klik Delete.
Lepaskan instans ECS.
Masuk ke Konsol ECS. Di halaman Instances, temukan instans target. Di kolom Actions, pilih Release. Lepaskan instans sesuai petunjuk.
Hapus grup keamanan.
Masuk ke Konsol ECS. Di halaman Security Groups, temukan grup keamanan target. Di kolom Actions, klik Delete. Hapus grup keamanan sesuai petunjuk.
File materials for the demo
Product image set | |
Website code and product data |