Menyimpan dan Menyajikan File Statis

Aplikasi sering kali harus menyajikan file statis seperti JavaScript, gambar, dan CSS, selain dari menangani permintaan dinamis. Aplikasi di lingkungan standar dapat menyajikan file statis dari opsi Google Cloud seperti Cloud Storage, menayangkannya secara langsung, atau menggunakan jaringan penayangan konten (CDN) pihak ketiga.

Biaya hosting situs statis Anda di Google Cloud lebih murah daripada penggunaan penyedia hosting tradisional, karena Google Cloud menyediakan paket gratis.

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 Go 1.11 ke Cloud Storage idiomatis, untuk menyimpan dan mengambil data dengan Cloud Storage di aplikasi App Engine.

Contoh inferensi dari bucket Cloud Storage

Contoh sederhana ini akan membuat bucket Cloud Storage dan mengupload aset statis menggunakan gcloud CLI:

  1. 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>
    
  2. Tetapkan ACL untuk memberikan akses baca ke item dalam bucket.

    gcloud storage buckets add-iam-policy-binding gs://<var>YOUR_BUCKET_NAME</var> --member=allUsers --role=roles/storage.objectViewer
    
  3. Mengupload item ke bucket. Perintah rsync biasanya merupakan cara tercepat dan termudah untuk mengupload dan memperbarui aset. Anda juga dapat menggunakan cp.

    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

Agar dapat menayangkan file statis untuk Go 1.11 di lingkungan standar, Anda dapat menentukan pengendali dalam file app.yaml menggunakan static_dir atau Elemen static_files.

Konten dalam file statis atau direktori statis tidak terpengaruh oleh setelan penskalaan di file app.yaml Anda. Permintaan ke file statis atau direktori statis ditangani oleh infrastruktur App Engine secara langsung, dan tidak mencapai runtime bahasa aplikasi.

Mengonfigurasi pengendali file statis

Untuk mengonfigurasi aplikasi agar menyalurkan direktori ./public dari URL /static, Anda harus menetapkan pengendali dalam file app.yaml.

Berikut ini cara menyalurkan file statis direktori ./public aplikasi contoh. Template untuk halaman index.html aplikasi ini menginstruksikan browser agar memuat file main.css, misalnya:

<link type="text/css" rel="stylesheet" href="/static/css/main.css">

Direktori ./public ditentukan dalam elemen static_dir dari file app.yaml project:

handlers:
  - url: /favicon\.ico
    static_files: favicon.ico
    upload: favicon\.ico

  - url: /static
    static_dir: public

  - url: /.*
    secure: always
    redirect_http_response_code: 301
    script: auto

Bagian handlers pada contoh di atas menangani tiga pola URL:

  • Pengendali /favicon.ico memetakan permintaan khusus untuk /favicon.ico ke file bernama favicon.ico di direktori utama aplikasi.

  • Pengendali /static memetakan permintaan untuk URL yang diawali dengan /static. Saat menerima permintaan untuk URL yang diawali dengan /static, App Engine akan memetakan sisa jalur tersebut ke file dalam direktori ./public. Jika file yang sesuai ditemukan di direktori tersebut, isi file tersebut akan ditampilkan ke klien.

  • Pengendali /.* cocok dengan semua URL lainnya dan mengarahkannya ke aplikasi Anda.

Pola jalur URL diuji sesuai urutan kemunculannya di app.yaml, sehingga pola untuk file statis Anda harus ditentukan sebelum pola /.*. Untuk informasi selengkapnya, lihat referensi app.yaml.

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.