Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Melayan Fail Statik daripada Memori dalam Go?

Bagaimanakah Saya Boleh Melayan Fail Statik daripada Memori dalam Go?

Patricia Arquette
Lepaskan: 2025-01-02 17:55:40
asal
1030 orang telah melayarinya

How Can I Serve Static Files from Memory in Go?

Menyajikan Fail Statik daripada Memori dalam Go

Aplikasi web selalunya memerlukan penyajian fail statik, seperti JavaScript, CSS dan imej. Biasanya, pengendali FileServer digunakan dalam Go untuk tujuan ini. Walau bagaimanapun, terdapat senario yang lebih cekap untuk membenamkan beberapa fail statik dalam binari dan menyampaikannya daripada ingatan.

Satu pendekatan ialah menggunakan pelaksanaan antara muka Sistem Fail tersuai. FileServer memerlukan FileSystem untuk pembinanya. Walaupun http.Dir biasanya digunakan untuk mencipta FileSystem, adalah mungkin untuk melaksanakan kita sendiri.

Pelaksanaan InMemoryFS

Pelaksanaan InMemoryFS berikut mensimulasikan sistem fail dalam ingatan :

type InMemoryFS map[string]http.File

func (fs InMemoryFS) Open(name string) (http.File, error) {
    if f, ok := fs[name]; ok {
        return f, nil
    }
    panic("No file")
}
Salin selepas log masuk

InMemoryFile Pelaksanaan

Struktur InMemoryFile berfungsi sebagai fail dalam InMemoryFS:

type InMemoryFile struct {
    at   int64
    Name string
    data []byte
    fs   InMemoryFS
}

func LoadFile(name string, val string, fs InMemoryFS) *InMemoryFile {
    return &InMemoryFile{at: 0,
        Name: name,
        data: []byte(val),
        fs:   fs}
}
Salin selepas log masuk

Perhatikan bahawa pelaksanaan ini mempunyai had tertentu dan digunakan terutamanya untuk tujuan demonstrasi.

Menyajikan Fail Statik daripada Memori

Setelah InMemoryFS dilaksanakan, kami boleh menyampaikan fail statik daripada memori:

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)
Salin selepas log masuk

Pendekatan Alternatif

Sebagai alternatif, daripada melaksanakan semula antara muka FileSystem, seseorang boleh mengubah suai pengendali FileServer untuk menyampaikan fail daripada memori. Ini mungkin lebih mudah untuk kes penggunaan yang lebih mudah.

Kesimpulan

Dengan menggunakan pelaksanaan FileServer tersuai atau melaksanakan semula antara muka FileSystem, adalah mungkin untuk membenamkan dan menyampaikan fail statik daripada memori dalam aplikasi Go. Pendekatan ini boleh memberi manfaat apabila menggunakan sebilangan kecil fail statik yang tidak memerlukan logik penyajian fail yang kompleks.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melayan Fail Statik daripada Memori dalam Go?. 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