Menyajikan Fail Statik daripada Memori dalam Go
Dalam Go, pengendali FileServer menyediakan kaedah yang mudah untuk menyampaikan fail statik. Walau bagaimanapun, untuk senario tertentu di mana bilangan fail adalah terhad (cth., dua hingga tiga fail), mengurus penempatan fail ini secara manual boleh menyusahkan.
Penyajian Fail Dalam Memori
Untuk mengurangkan keperluan pengendalian fail luaran, kami boleh meneroka pilihan untuk membenamkan fail statik ke dalam binari dan menyediakannya secara langsung dari ingatan. Satu cara untuk mencapainya ialah melalui pelaksanaan sistem fail tersuai.
Pelaksanaan Antaramuka Sistem Fail Tersuai
Pengendali FileServer memerlukan objek FileSystem, yang biasanya mewakili fail sebenar sistem. Walau bagaimanapun, kami boleh mencipta pelaksanaan FileSystem kami sendiri yang beroperasi dalam ingatan semata-mata. Kod berikut mentakrifkan sistem fail dalam memori yang mudah:
package main import ( "net/http" ) type InMemoryFS map[string]http.File
Untuk berinteraksi dengan sistem fail, kami melaksanakan kaedah Buka, yang mengembalikan objek http.Fail yang mewakili fail dalam ingatan:
func (fs InMemoryFS) Open(name string) (http.File, error) { if f, ok := fs[name]; ok { return f, nil } panic("No file") }
Pelaksanaan Fail Dalam Memori
Seterusnya, kami mentakrifkan Jenis InMemoryFile yang melaksanakan antara muka http.File:
type InMemoryFile struct { at int64 Name string data []byte fs InMemoryFS }
Pelaksanaan InMemoryFile menyediakan kaedah untuk memanipulasi data fail, termasuk Baca, Cari dan Tutup.
Mencipta In -Pelayan Fail Memori
Dengan pelaksanaan FileSystem dan http.File tersuai, kami boleh mencipta Pelayan Fail yang beroperasi pada sistem fail dalam ingatan:
FS := make(InMemoryFS) FS["foo.html"] = LoadFile("foo.html", HTML, FS) FS["bar.css"] = LoadFile("bar.css", CSS, FS) http.Handle("/", http.FileServer(FS)) http.ListenAndServe(":8080", nil)
Pendekatan ini membolehkan kami mentakrifkan fail statik sebagai pemalar dan menyampaikannya terus daripada memori, menghapuskan keperluan untuk pengurusan fail luaran.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melayan Fail Statik Terus dari Memori dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!