Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Kelola perilaku cache

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Firebase Hosting menggunakan CDN global yang andal untuk membuat situs Anda secepat mungkin.

Setiap konten statis yang diminta secara otomatis di-cache di CDN . Jika Anda menerapkan ulang konten situs, Firebase Hosting secara otomatis menghapus semua konten statis yang di-cache di seluruh CDN hingga permintaan berikutnya.

Namun, karena Cloud Functions dan layanan Cloud Run menghasilkan konten secara dinamis, konten untuk URL tertentu dapat bervariasi berdasarkan hal-hal seperti input pengguna atau identitas pengguna. Untuk memperhitungkan hal ini, permintaan yang ditangani oleh kode backend tidak cache pada CDN secara default.

Namun, Anda dapat mengonfigurasi perilaku caching untuk konten dinamis . Misalnya, jika suatu fungsi hanya menghasilkan konten baru secara berkala, Anda dapat mempercepat aplikasi dengan menyimpan konten yang dihasilkan dalam cache setidaknya untuk waktu yang singkat.

Anda juga berpotensi mengurangi biaya eksekusi fungsi karena konten disajikan dari CDN daripada melalui fungsi yang dipicu. Baca selengkapnya tentang mengoptimalkan eksekusi fungsi dan layanan di dokumentasi Cloud Functions dan Cloud Run .

Pelajari lebih lanjut tentang perilaku caching di dokumentasi pengembang web Google .

Setel Kontrol Tembolok

Alat utama yang Anda gunakan untuk mengelola cache untuk konten dinamis adalah header Cache-Control . Dengan mengonfigurasi header ini, Anda dapat mengomunikasikan ke browser dan CDN berapa lama konten Anda dapat di-cache. Dalam fungsi Anda, Anda mengatur Cache-Control seperti:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

Dalam contoh header ini, arahan melakukan tiga hal:

  • public — Menandai cache sebagai public . Ini berarti browser dan server perantara (artinya CDN untuk Firebase Hosting) dapat menyimpan konten dalam cache.

  • max-age — Memberi tahu browser dan CDN berapa detik mereka dapat menyimpan konten dalam cache. Ketika waktu yang ditetapkan berakhir, browser dan CDN harus memvalidasi ulang konten dengan server asal. Dalam contoh header, kami mengizinkan browser dan CDN untuk men-cache konten selama lima menit (lihat s-maxage di bawah untuk kontrol khusus untuk caching CDN).

  • s-maxage — Mengganti direktif max-age hanya untuk caching CDN; memberitahu CDN berapa detik yang dapat menyimpan konten. Ketika waktu yang ditetapkan berakhir, CDN harus memvalidasi ulang konten dengan server asal. Dalam contoh header, kami mengganti setelan max-age untuk CDN saja dan mengizinkan CDN untuk menyimpan konten dalam cache selama sepuluh menit.

Untuk max-age dan s-maxage , tetapkan nilainya ke jumlah waktu terlama yang Anda rasa nyaman bagi pengguna yang menerima konten basi. Jika halaman berubah setiap beberapa detik, gunakan nilai waktu yang kecil. Namun, jenis konten lain dapat di-cache dengan aman selama berjam-jam, berhari-hari, atau bahkan berbulan-bulan.

Anda dapat mempelajari lebih lanjut tentang header Cache-Control di Jaringan Pengembang Mozilla dan di dokumentasi pengembang web Google .

Kapan konten yang di-cache disajikan?

Browser dan CDN menyimpan konten Anda berdasarkan:

  • Nama host
  • Jalan
  • String kueri
  • Isi dari header permintaan yang ditentukan dalam header Vary

Variasikan header

Header Vary menentukan header permintaan mana yang harus digunakan untuk memberikan respons yang sesuai (apakah konten yang di-cache valid atau jika konten harus divalidasi ulang dengan server asal).

Firebase Hosting secara otomatis menyetel header Vary yang sesuai pada respons Anda untuk situasi umum. Sebagian besar waktu, Anda tidak perlu khawatir tentang header Vary . Namun, dalam beberapa kasus penggunaan lanjutan, Anda mungkin memiliki header lain yang Anda perlukan untuk memengaruhi cache. Jika demikian, Anda dapat mengatur header Vary pada respons Anda. Sebagai contoh:

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

Dalam hal ini, nilai dari header Vary adalah:

vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization

Dengan pengaturan ini, dua permintaan yang identik dengan header X-My-Custom-Header yang berbeda di-cache secara terpisah. Perhatikan bahwa Hosting menambahkan Cookie dan Authorization ke header Vary secara default saat permintaan dibuat untuk konten dinamis. Ini memastikan bahwa setiap sesi atau header otorisasi cookie yang Anda gunakan menjadi bagian dari kunci cache, yang mencegah kebocoran konten yang tidak disengaja.

Juga mencatat:

  • Hanya permintaan GET dan HEAD yang dapat di-cache. Permintaan HTTPS menggunakan metode lain tidak pernah di-cache.

  • Hati-hati saat menambahkan pengaturan ke header Vary . Semakin banyak pengaturan yang Anda tambahkan, semakin kecil kemungkinan CDN dapat menyajikan konten yang di-cache. Juga ingat bahwa Vary didasarkan pada header permintaan , bukan header respons .

Menggunakan cookie

Saat menggunakan Firebase Hosting bersama dengan Cloud Functions atau Cloud Run, cookie biasanya dihapus dari permintaan yang masuk. Hal ini diperlukan untuk memungkinkan perilaku cache CDN yang efisien. Hanya cookie __session yang diberi nama khusus yang diizinkan untuk melewati eksekusi aplikasi Anda.

Saat ada, cookie __session secara otomatis dijadikan bagian dari kunci cache, artinya tidak mungkin dua pengguna dengan cookie berbeda menerima respons cache yang lain. Hanya gunakan cookie __session jika aplikasi Anda menyajikan konten yang berbeda bergantung pada otorisasi pengguna.