Topik ini menggunakan contoh website e-commerce sederhana untuk menunjukkan cara mempercepat website Anda dengan memisahkan konten statis dan dinamis menggunakan Functions and Pages. Panduan ini menjelaskan cara kerja Functions and Pages, kasus penggunaannya, serta menyediakan instruksi terperinci untuk menerapkan dan mengonfigurasi fitur tersebut guna meningkatkan kecepatan pemuatan website dan pengalaman pengguna secara signifikan.
Solusi ikhtisar
Untuk mempercepat website Anda dengan memisahkan konten statis dan dinamis, lakukan langkah-langkah berikut:
Konfigurasikan situs ESA: Tambahkan nama domain utama Anda ke ESA untuk mengaktifkan akselerasi pada nama domain tersebut.
Terapkan resource statis: Simpan resource gambar di OSS dan konfigurasikan nama domain yang dipercepat di ESA untuk mengakses resource tersebut.
Terapkan resource dinamis: Terapkan layanan Python pada server ECS dan konfigurasikan nama domain di ESA untuk mempercepat permintaan dinamis.
Konfigurasikan Functions and Pages: Konfigurasikan fungsi dan tetapkan nama domain padanya. Fungsi ini membantu memberikan respons rendering halaman yang lebih cepat.
Catatan
Saat mengikuti langkah-langkah dalam topik ini, ganti nama domain contoh berikut dengan nama domain aktual Anda. Nama domain yang digunakan adalah www.example.com sebagai Nama Domain Asal, shopping.example.com sebagai nama domain yang dipercepat, dan images.example.com sebagai nama domain resource statis. Saat melakukan langkah-langkah dalam topik ini, Anda harus mengganti nama domain contoh tersebut dengan nama domain aktual Anda.
1. Konfigurasikan situs
Tambahkan situs Anda 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, di bagian Location for Acceleration and Protection, pilih wilayah tempat situs Anda memerlukan layanan akselerasi aman. Untuk DNS Setup, pilih CNAME lalu klik Next.
Di ESA console, klik Websites pada panel navigasi kiri. Di halaman Manajemen Situs, klik situs target. Pada halaman Overview, verifikasi kepemilikan domain Anda.
Salin Record Value dari rekaman TXT.

Di konsol Alibaba Cloud DNS, pilih Public DNS > Authoritative Domain Names dari panel navigasi sebelah 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
Nilai contoh
Record type
TXTHost record
_esaauthRecord value
verify_a186***be8(Nilai rekaman yang diberikan di konsol.)TTL
10 menit
Di konsol ESA, buka halaman ikhtisar situs target lalu klik Verify.
Verifikasi berhasil: Jika sistem menampilkan pesan
Verification successful, verifikasi telah selesai.Verifikasi gagal: Jika sistem menampilkan pesan
Verification failed, periksa apakah Anda telah melakukan langkah sebelumnya dengan benar dan sesuaikan pengaturannya jika diperlukan. Setelah melakukan koreksi, 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 Create.

Pilih bucket yang telah Anda buat. Di halaman Files, ekstrak kumpulan gambar produk dari File resource lalu unggah gambar-gambar tersebut ke direktori root bucket.
CatatanKami menyarankan Anda menyimpan resource gambar di direktori root bucket OSS.
2.2 Konfigurasikan domain yang dipercepat untuk resource statis
Di konsol ESA, pilih Websites. Di kolom Website, klik situs target.
Di bilah navigasi kiri, klik , lalu tambahkan rekaman DNS berdasarkan Record Type.
Parameter
Nilai contoh
Record Type
CNAMEHostname
imagesProxy Status
Enabled
Record Value
OSS
Access Type
Private Access (Same-account)
Authorization
Akses privat untuk akun yang sama sudah diotorisasi secara default.
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.

Buka konsol Alibaba Cloud DNS. Di panel navigasi sebelah 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
Nilai contoh
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. Jika tidak langsung berlaku, tunggu beberapa menit.
Masukkan
http://<your_accelerated_domain_name>/1.pngdi browser Anda untuk memverifikasi bahwa gambar ditampilkan.CatatanJika terjadi error 404, ubah URL untuk mengakses gambar berdasarkan path direktorinya. Misalnya, jika gambar Anda berada di direktori images alih-alih direktori root, gunakan path
http://<your_accelerated_domain_name>/images/1.png.
3. Terapkan resource dinamis
3.1 Siapkan lingkungan
Login ke konsol ECS.
Di panel navigasi sebelah 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 | Nilai contoh |
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 | ESSD cloud disk |
Ukuran disk sistem | 40 GiB |
IP publik | Pilih Assign Public IPv4 Address. |
Metode penagihan bandwidth | Pay-by-data-transfer |
Bandwidth puncak | 5 Mbps |
grup keamanan | Create Security Group (Di Open IPv4 Port/Protocol, pilih |
Pengaturan manajemen | Custom Password (Tetapkan kata sandi Anda.) |
3.2 Mendeploy sumber daya dinamis
Login ke konsol ECS.
Di panel navigasi sebelah 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 proses login.

Unduh kode website dan data produk dari File resource ke mesin lokal Anda, ekstrak paketnya, lalu unggah dua file dari paket tersebut ke server ECS.
Di file ItemInfo.json, ganti nama domain
images.example.comdengan nama domain yang dipercepat yang telah Anda konfigurasikan untuk resource statis di Bagian 2.2.Lalu, di pojok kiri atas, pilih File > Open New File Management > Upload File untuk mengunggah dua file yang telah diunduh ke server.

Di konsol Workbench, jalankan perintah berikut untuk memulai server HTTP sederhana.
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 memeriksa apakah informasi produk dinamis dikembalikan dengan benar.
3.3 Konfigurasikan domain yang dipercepat untuk resource dinamis
Di konsol ESA, pilih Websites. Di kolom Actions situs target, klik ikon lalu pilih DNS Records.
Di panel navigasi sebelah kiri, pilih .
Di halaman daftar rekaman, klik Add Record, konfigurasikan parameter, lalu klik Next.
Parameter
Nilai contoh
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.
CatatanJangan tutup halaman saat ini. Anda perlu kembali ke halaman ini di Langkah 8 untuk memverifikasi bahwa rekaman CNAME telah berlaku.

Buka konsol Alibaba Cloud DNS. Di panel navigasi sebelah 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
Nilai contoh
Record type
CNAMEHost record
wwwRecord value
www.example.com.**.*******.com(nilai record value dari CNAME configuration wizard)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. Jika tidak langsung berlaku, 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 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 konsol ESA. Di panel navigasi sebelah 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 pengikatan 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.

Login ke konsol Alibaba Cloud DNS. Di panel navigasi sebelah 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
Deskripsi
Nilai contoh
Record type
Pilih tipe nama domain yang ingin Anda petakan ke rekaman.
CNAMEHost record
Masukkan rekaman host berdasarkan awalan nama domain.
shoppingRecord value
Masukkan nilai CNAME nama domain fungsi edge.
shopping.example.com.**.*******.comTTL
Siklus pembaruan nama domain. Pertahankan nilai default.
10 menit
Segarkan halaman rekaman DNS dan periksa apakah CNAME Status nama domain fungsi edge berubah dari To be configured menjadi Configured.
CatatanRekaman CNAME mungkin memerlukan beberapa menit untuk berlaku. Jika tidak langsung berlaku, tunggu beberapa menit.
4.2 Konfigurasikan sertifikat edge
Edge Security Acceleration (ESA) mendukung HTTPS untuk transmisi data yang aman dan terenkripsi. Anda dapat mengonfigurasi sertifikat SSL di ESA dan mengaktifkan SSL/TLS untuk mengenkripsi permintaan antara client dan POP ESA. Untuk praktik ini, kami merekomendasikan mengajukan sertifikat gratis. Untuk informasi selengkapnya, lihat Konfigurasikan sertifikat edge.
Di konsol ESA, klik Websites di panel navigasi sebelah kiri, lalu klik situs target.
Di halaman manajemen situs target, pilih SSL/TLS > Edge Certificates dari panel navigasi sebelah 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
Nilai contoh
Certificate authority
Gunakan nilai default.
Let's EncryptCertificate domain names
Masukkan nama domain resource statis, resource dinamis, dan fungsi edge yang telah Anda konfigurasikan pada langkah-langkah sebelumnya.
images.example.comwww.example.comshopping.example.comPengajuan sertifikat gratis memerlukan waktu 5 hingga 10 menit. Setelah sertifikat diterbitkan, sertifikat tersebut akan secara otomatis diterapkan ke platform ESA. Tidak diperlukan operasi manual.
4.3 Konfigurasikan protokol dan port origin
Setelah mengonfigurasi sertifikat SSL, ESA secara default menggunakan protokol client (HTTPS) untuk origin fetch. Namun, server origin dalam topik ini tidak mendukung HTTPS. Origin fetch menggunakan HTTPS akan gagal, sehingga Anda harus mengonfigurasi ESA untuk menggunakan HTTP dalam origin fetch.
Di konsol ESA, klik Websites di panel navigasi sebelah kiri, lalu klik situs target.
Di halaman manajemen situs target, pilih di panel navigasi sebelah kiri.
Di bagian Origin Certificates, temukan Origin Protocol and Port lalu klik Configure. Konfigurasikan parameter lalu klik OK.
Parameter
Deskripsi
Nilai contoh
Origin protocol
Karena server origin tidak mendukung HTTPS, pilih
HTTP.HTTPHTTP port
Pertahankan nilai default
80.80
4.4 Uji dan publikasikan fungsi edge
Di halaman daftar Functions and Pages, klik fungsi target.
Di halaman detail fungsi, beralih ke tab Code. Gunakan kode JavaScript berikut dan ganti variabel
urlPrefixdengan nama domain asalwww.example.com. Lalu, klik Save.async function handleRequest(request) { const urlPrefix = 'www.example.com'; // The request URL of the HTML file. const staticDataUrl = 'http://' + urlPrefix + '/index.html'; // The request URL of the dynamic data. const dynamicDataUrl = 'http://' + urlPrefix + '/ItemsInfo.json'; // Use the Cache API to query 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 product data from the origin server. const jsonResponse = await fetch(dynamicDataUrl); const json = await jsonResponse.json(); // Encapsulate 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 dynamic data. const finalHtml = html.replace("#(itemsHtml)", itemsHtml); // Return the HTML page rendered at a 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 menjalankan pengujian lokal. Log eksekusi ditampilkan di bagian kiri bawah editor.
Setelah pengujian lokal berhasil, klik One-click Release untuk menerapkan kode ke lingkungan produksi.
5. Verifikasi dan bersihkan resource
5.1 Verifikasi solusi
Setelah memublikasikan fungsi edge, Anda dapat memverifikasi hasilnya dengan cara berikut:
Buka browser dan akses nama domain fungsi edge yang telah Anda buat di Bagian 4.1 (misalnya, https://<your_edge_function_domain_name>).
Periksa apakah halaman dimuat dan apakah informasi produk dirender secara dinamis.
Gunakan alat developer browser untuk melihat permintaan jaringan dan pastikan resource statis disajikan dari cache serta data dinamis dipercepat oleh POP.


5.2 Bersihkan resource (Opsional)
Dalam solusi ini, Anda membuat beberapa instans sumber daya cloud. Jika Anda tidak lagi memerlukan resource ini setelah pengujian, hapus instans tersebut untuk menghindari biaya tambahan:
Hapus situs.
Login ke konsol ESA. Di panel navigasi sebelah kiri, klik Websites. Di halaman daftar Manajemen Situs, klik Delete di kolom Actions.
Hapus fungsi edge.
Di konsol ESA, pilih di panel navigasi sebelah 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 instruksi di layar untuk melepaskan instance tersebut.
Hapus grup keamanan.
Login ke konsol ECS. Di halaman Security Groups, temukan grup keamanan target. Di kolom Actions, klik Delete lalu ikuti instruksi di layar untuk menghapus grup keamanan tersebut.
File resource
Kumpulan gambar produk | |
Kode website dan data produk |