Aplikasi sering kali harus menyajikan file statis seperti JavaScript, gambar, dan CSS, selain dari menangani permintaan dinamis. Aplikasi di lingkungan fleksibel dapat menyajikan file statis dari opsi Google Cloud seperti Cloud Storage, menyajikannya secara langsung, atau menggunakan jaringan penayangan konten (CDN) pihak ketiga.
Menyajikan file dari Cloud Storage
Cloud Storage dapat menghosting aset statis untuk aplikasi web dinamis. Manfaat menggunakan Cloud Storage daripada menyajikan langsung dari aplikasi Anda meliputi:
- Cloud Storage pada dasarnya berfungsi sebagai jaringan penayangan konten (CDN). Hal ini tidak memerlukan konfigurasi khusus karena secara default objek yang dapat dibaca secara publik akan disimpan dalam cache di jaringan Cloud Storage global.
- Muatan aplikasi Anda akan dikurangi dengan mengurangi beban aset statis ke Cloud Storage. Bergantung pada jumlah aset statis yang Anda miliki dan frekuensi aksesnya, hal ini dapat mengurangi biaya menjalankan aplikasi dengan jumlah yang signifikan.
- Biaya bandwidth untuk mengakses konten sering kali lebih murah dengan Cloud Storage.
Anda dapat mengupload aset ke Cloud Storage menggunakan Google Cloud CLI atau Cloud Storage API.
Library Klien Google Cloud menyediakan klien ke Cloud Storage idiomatis, untuk menyimpan dan mengambil data dengan Cloud Storage di aplikasi App Engine.
Contoh inferensi dari bucket Cloud Storage
Contoh ini akan membuat bucket Cloud Storage dan mengupload aset statis menggunakan gcloud CLI:
Membuat bucket. Memberi nama bucket yang sama dengan ID project Anda adalah hal yang umum, tetapi tidak wajib. Nama bucket harus unik secara global.
gcloud storage buckets create gs://<var>your-bucket-name</var>
Tetapkan kebijakan IAM untuk memberikan akses baca publik ke item dalam bucket.
gcloud storage buckets add-iam-policy-binding gs://<var>your-bucket-name</var> --member=allUsers --role=roles/storage.objectViewer
Mengupload item ke bucket. Perintah
rsync
biasanya merupakan cara tercepat dan termudah untuk mengupload dan memperbarui aset. Anda juga dapat menggunakancp
.gcloud storage rsync ./static gs://<var>your-bucket-name</var>/static --recursive
Sekarang Anda dapat mengakses aset statis melalui
https://storage.googleapis.com/<var>your-bucket-name</var>/static/...
.
Untuk detail selengkapnya tentang cara menggunakan Cloud Storage untuk menyalurkan aset statis, termasuk cara menyajikan aset dari nama domain kustom, lihat Cara Menghosting Situs Statis.
Menyajikan file dari layanan Google Cloud lainnya
Anda juga memiliki opsi untuk menggunakan Cloud CDN atau layanan penyimpanan Google Cloud lainnya.
Menyajikan file langsung dari aplikasi Anda
Menyajikan file dari aplikasi biasanya mudah dilakukan, tetapi ada beberapa kelemahan yang harus Anda pertimbangkan:
- Permintaan file statis dapat menggunakan resource yang akan digunakan untuk permintaan dinamis.
- Bergantung pada konfigurasi Anda, menyajikan file dari aplikasi dapat menghasilkan latensi respons, yang juga dapat memengaruhi kapan instance baru dibuat untuk menangani muatan.
Contoh penyajian file statis dengan aplikasi Anda
Go
Contoh berikut menunjukkan cara menayangkan file statis dengan aplikasi Anda.
Anda dapat menggunakan aplikasi contoh dalam panduan ini untuk versi Go yang didukung dengan menentukan versi runtime
dan sistem operasi dalam file
app.yaml
.
Anda dapat menggunakan http.FileServer
atau http.ServeFile
standar untuk menyajikan file langsung dari aplikasi.
Java
Contoh berikut menunjukkan cara menayangkan file statis dengan aplikasi Anda.
Anda dapat menggunakan aplikasi contoh dalam panduan ini untuk versi Java apa pun yang didukung dengan menentukan
versi runtime dan sistem operasi dalam file app.yaml
.
Container servlet runtime Java akan menggunakan deployment descriptor,
file web.xml
, untuk memetakan URL ke servlet, termasuk aset statis. Jika Anda tidak
menentukan web.xml
, default akan digunakan yang memetakan semuanya ke servlet
default.
Dalam contoh ini, ./src/main/webapp/index.html
merujuk pada sheet gaya yang ditayangkan
dari /stylesheets/styles.css
.
File styles.css
terletak di ./src/main/webapp/stylesheets/styles.css
.
Anda dapat secara eksplisit mengonfigurasi cara penanganan file statis di file web.xml
.
Misalnya, jika Anda ingin memetakan permintaan untuk semua file yang memiliki ekstensi .jpg
:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
Jika menggunakan framework web, seperti Play, Anda harus melihat dokumentasi framework tentang aset statis.
Node.js
Contoh berikut menunjukkan cara menayangkan file statis dengan aplikasi Anda.
Anda dapat menggunakan aplikasi contoh dalam panduan ini untuk versi Node.js apa pun yang didukung dengan menentukan
versi runtime dan sistem operasi di file app.yaml
.
Sebagian besar framework web menyertakan dukungan untuk menyajikan file statis. Dalam contoh ini,
aplikasi menggunakan
middleware express.static
untuk menyajikan file dari direktori ./public
ke URL /static
.
Tampilan ini mengacu ke /static/main.css
.
Stylesheet itu sendiri berada di ./public/css
, yang disajikan dari
/static/main.css
.
Framework Node.js lainnya, seperti Hapi, Koa, dan Sails biasanya mendukung penyajian file statis langsung dari aplikasi. Lihat dokumentasinya untuk mengetahui detail tentang cara mengonfigurasi dan menggunakan konten statis.
PHP
Runtime PHP menjalankan nginx untuk menyajikan aplikasi Anda, yang dikonfigurasi untuk menyajikan file statis di direktori project Anda. Anda harus mendeklarasikan root dokumen dengan menentukan document_root
dalam file app.yaml
Anda. Anda dapat menggunakan aplikasi contoh
dalam panduan ini untuk versi PHP yang didukung dengan menentukan
versi runtime dan sistem operasi dalam file app.yaml
.
Python
Contoh berikut menunjukkan cara menayangkan file statis dengan aplikasi Anda.
Anda dapat menggunakan aplikasi contoh dalam panduan ini untuk
versi Python yang didukung
dengan menentukan versi runtime dan sistem operasi di
file app.yaml
.
Sebagian besar framework web menyertakan dukungan untuk menyajikan file statis. Dalam contoh ini,
aplikasi menggunakan kemampuan bawaan Flask
untuk menyajikan file dalam direktori ./static
dari URL /static
.
Aplikasi menyertakan tampilan yang merender template. Flask secara otomatis
menyajikan semua yang ada di direktori ./static
tanpa konfigurasi tambahan.
Template yang dirender oleh tampilan menyertakan stylesheet yang terletak di
/static/main.css
.
Stylesheet terletak di ./static/main.css
.
Framework Python lainnya, seperti Django, Pyramid, dan Bottle biasanya mendukung penyajian file statis langsung dari aplikasi. Lihat dokumentasinya untuk mengetahui detail tentang cara mengonfigurasi dan menggunakan konten statis.
Ruby
Sebagian besar framework web menyertakan dukungan untuk menyajikan file statis.
Contoh berikut menunjukkan cara menayangkan file statis dengan aplikasi Anda.
Anda dapat menggunakan aplikasi contoh dalam panduan ini untuk versi Ruby yang didukung dengan menentukan
versi runtime dan sistem operasi dalam file app.yaml
.
Sinatra
Framework web Sinatra
menyajikan file dari direktori ./public
secara default. Aplikasi
ini menyertakan tampilan yang mengacu ke /application.css
.
Stylesheet terletak di ./public/application.css
yang ditayangkan
dari /application.css
.
Ruby di Rails
Framework web Ruby on Rails
menyajikan file dari direktori ./public
secara default. File
JavaScript dan CSS statis juga dapat dibuat oleh pipeline
aset Rails.
Aplikasi contoh ini berisi tampilan tata letak yang menyertakan semua stylesheet aplikasi.
Stylesheet itu sendiri adalah file .css
yang terletak di ./public/application.css
.
Secara default, aplikasi Rails tidak membuat atau menyajikan aset statis saat berjalan dalam produksi.
Runtime Ruby mengeksekusi rake assets:precompile
selama deployment untuk menghasilkan aset statis dan menetapkan variabel lingkungan RAILS_SERVE_STATIC_FILES
untuk mengaktifkan file statis yang disajikan dalam produksi.
.NET
Contoh berikut menunjukkan cara menayangkan file statis dengan aplikasi Anda.
Anda dapat menggunakan aplikasi contoh dalam panduan ini untuk
versi .NET yang didukung
dengan menentukan versi runtime
dan sistem operasi dalam file
app.yaml
.
Untuk mengaktifkan penyajian file statis, tambahkan:
Menyajikan dari jaringan penayangan konten (CDN) pihak ketiga
Anda dapat menggunakan CDN pihak ketiga eksternal untuk menyajikan file statis dan meng-cache permintaan dinamis, tetapi aplikasi Anda mungkin mengalami peningkatan latensi dan biaya.
Untuk meningkatkan performa, Anda harus menggunakan CDN pihak ketiga yang mendukung CDN Interconnect.