Pelanggan Firestore dalam Enjin Apl Google: Per-Permintaan atau Global?

Linda Hamilton
Lepaskan: 2024-11-25 11:45:15
asal
518 orang telah melayarinya

Firestore Client in Google App Engine: Per-Request or Global?

Mencipta Klien Firestore dalam Enjin Apl Google: Setiap Permintaan atau Global?

Kesedaran Konteks dalam Enjin Apl Google

Enjin Apl Google (GAE) mencadangkan menggunakan konteks.Konteks diskop kepada permintaan HTTP untuk setiap pustaka klien. Ini memastikan bahawa pelanggan terikat dengan permintaan khusus, menyediakan data khusus konteks untuk operasi pangkalan data.

Per-Permintaan lwn. Pelanggan Global

Pendekatan Setiap Permintaan:

Dalam contoh yang disediakan, pelanggan Firestore baharu dicipta dalam fungsi pengendali untuk setiap permintaan:

func (s *server) person(ctx context.Context, id int) {
    _, err := s.db.Client.Collection("people").Doc(uid).Set(ctx, p)
}
Salin selepas log masuk

Walaupun pendekatan ini memastikan pelanggan diasingkan kepada permintaan semasa, ia boleh menjadi tidak cekap dan memperkenalkan overhed yang tidak perlu, terutamanya untuk permintaan jangka panjang atau operasi frekuensi tinggi.

Pendekatan Pelanggan Global:

Pendekatan alternatif ialah mencipta satu pelanggan Firestore global dan gunakannya semula untuk berbilang permintaan. Walau bagaimanapun, ini tidak dapat dilaksanakan dalam masa jalan Go lama dalam GAE.

Masa Jalan Go 1.11 Baharu

Dengan pengenalan masa jalan Go 1.11 untuk standard GAE, sekatan skop konteks telah dilonggarkan. Ini kini membolehkan anda menggunakan mana-mana konteks yang anda suka.

Amalan Terbaik untuk Go 1.11 dan Firestore

Dalam masa jalan standard GAE baharu, anda disyorkan untuk:

  1. Mulakan klien Firestore dalam fungsi main() atau init() menggunakan latar belakang konteks:

    func init() {
     var err error
     client, err = firestore.NewClient(context.Background())
    }
    Salin selepas log masuk
  2. Dalam pengendali permintaan, gunakan konteks permintaan untuk panggilan API:

    func handleRequest(w http.ResponseWriter, r *http.Request) {
     doc := client.Collection("cities").Doc("Mountain View")
     doc.Set(r.Context(), someData)
    }
    Salin selepas log masuk

Dengan mengikuti amalan terbaik ini, anda boleh memanfaatkan keuntungan kecekapan yang disediakan dengan menggunakan semula klien Firestore global sambil masih mengekalkan konteks khusus permintaan dalam operasi pangkalan data anda.

Atas ialah kandungan terperinci Pelanggan Firestore dalam Enjin Apl Google: Per-Permintaan atau Global?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan