Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Harus Mengurus Pelanggan Firestore dalam Enjin Apl Google untuk Prestasi Optimum?

Bagaimanakah Saya Harus Mengurus Pelanggan Firestore dalam Enjin Apl Google untuk Prestasi Optimum?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 16:29:01853semak imbas

How Should I Manage Firestore Clients in Google App Engine for Optimal Performance?

Per-Request Firestore Client dalam Google App Engine

Persoalannya berkisar pada pendekatan yang sesuai untuk mengurus klien Firestore dalam Google App Engine (GAE ). Kebimbangan itu berpunca daripada keperluan GAE untuk perpustakaan pelanggan menggunakan konteks. Konteks merangkumi permintaan HTTP.

Isunya

Secara tradisinya, pelanggan Firestore telah dibuat dalam cara berikut:

type server struct {
    db *firestore.Client
}

func main() {
    s := &server{db: NewFirestoreClient()}

    // Setup Router
    http.HandleFunc("/people", s.peopleHandler())

    // Starts the server to receive requests
    appengine.Main()
}

Walau bagaimanapun, pendekatan ini bercanggah dengan keperluan GAE untuk konteks.Konteks untuk diwarisi daripada skop permintaan.

Penyelesaian

Penyelesaian dalam masa jalan Go 1.11 baharu GAE ialah menggunakan semula firestore.Instance pelanggan untuk berbilang invokasi. Ini tidak boleh dilakukan dalam masa jalan Go yang lama, oleh itu keperluan untuk mencipta klien baharu setiap permintaan.

Pelaksanaan

Dalam masa jalan Go 1.11, anda boleh memulakan klien dalam main() atau init().

package main

var client *firestore.Client

func init() {
  var err error
  client, err = firestore.NewClient(context.Background())
  // handle errors as needed
}

func handleRequest(w http.ResponseWriter, r *http.Request) {
  doc := client.Collection("cities").Doc("Mountain View")
  doc.Set(r.Context(), someData)
  // rest of the handler logic
}

Dengan menggunakan konteks permintaan dalam fungsi pengendali, anda boleh menghapuskan keperluan untuk menghantar pembolehubah ctx daripada utama kepada pengendali, memudahkan suntikan pergantungan dan meningkatkan kejelasan kod.

Sumber

  • [GAE Go 1.11 Perbezaan](https://cloud.google.com/appengine/docs/standard/go111/go-differences)
  • [Contoh Apl GAE menggunakan Go 1.11 dan Firestore](https://github.com/ hiranya911/firecloud/blob/master/crypto-fire-alert/cryptocron/web/main.go)

Atas ialah kandungan terperinci Bagaimanakah Saya Harus Mengurus Pelanggan Firestore dalam Enjin Apl Google untuk Prestasi Optimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:Hello World dalam Bahasa GoArtikel seterusnya:Hello World dalam Bahasa Go