Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Melaksanakan caching tempatan menggunakan rangka kerja web Golang rangka kerja Buffalo

Melaksanakan caching tempatan menggunakan rangka kerja web Golang rangka kerja Buffalo

王林
王林asal
2023-06-24 09:21:061094semak imbas

Caching tempatan ialah teknologi yang biasa digunakan dalam pembangunan web, yang boleh meningkatkan prestasi dan ketersediaan aplikasi web. Semasa proses pembangunan, kita selalunya perlu menggunakan rangka kerja tertentu untuk melaksanakan caching tempatan Dalam artikel ini, saya akan memperkenalkan cara menggunakan rangka kerja Web Golang Buffalo untuk melaksanakan caching tempatan.

Rangka kerja Buffalo ialah rangka kerja web yang dibangunkan berdasarkan bahasa Golang. Dalam rangka kerja Buffalo, kami boleh melaksanakan caching tempatan dengan mudah, yang boleh meningkatkan prestasi aplikasi web dengan banyak. Di bawah saya akan memperkenalkan cara menggunakan rangka kerja Buffalo untuk melaksanakan caching tempatan.

Langkah 1: Buat aplikasi Buffalo baharu

Untuk menggunakan rangka kerja Buffalo untuk melaksanakan caching tempatan, kita perlu mencipta aplikasi Buffalo baharu terlebih dahulu. Kita boleh mencipta aplikasi Buffalo baharu menggunakan arahan berikut:

$ buffalo new myapp

Ini akan mencipta aplikasi Buffalo baharu bernama myapp.

Langkah 2: Tambahkan pergantungan gorila/mux

Kami akan menggunakan gorila/mux sebagai penghala HTTP kami. Untuk ini, kita perlu menambah kebergantungan gorila/mux. Kita boleh melakukan ini dengan menambah baris berikut dalam fail go.mod:

require github.com/gorilla/mux v1.8.0

dan kemudian jalankan arahan berikut untuk memuat turun kebergantungan:

$ go mod download

Langkah 3: Buat pengawal cache

Kami perlu mencipta pengawal cache untuk mengendalikan semua permintaan. Kita boleh mencipta fail baharu bernama CacheController dan menambah kod berikut:

package actions

import (
    "net/http"
    "time"

    "github.com/gorilla/mux"
    "github.com/gobuffalo/buffalo"
    "github.com/gobuffalo/buffalo/cache"
)

func CacheController() buffalo.Handler {
    // create a map to store the cache entries
    var cacheEntries = make(map[string]cache.Store)

    return func(c buffalo.Context) error {
        // get the current route
        route := c.Value("current_route").(mux.RouteMatch)

        // get the cache entry name
        cacheKey := route.Route.GetName()

        // check if the cache entry exists
        if cacheEntry, ok := cacheEntries[cacheKey]; ok {
            // if it does, get the value from the cache
            cachedValue, err := cacheEntry.Get(c.Request().URL.String())
            if err == nil {
                // if there's no error, return the value from the cache
                return c.Render(http.StatusOK, r.JSON(cachedValue))
            }
        }

        // if the cache entry doesn't exist or there was an error getting
        // the value from the cache, run the handler and cache the result
        h := route.Route.GetHandler()
        res := h(c)
        cacheStore := cache.NewCache(time.Minute * 1)
        cacheStore.Add(c.Request().URL.String(), res.Body.String())

        cacheEntries[cacheKey] = cacheStore

        return res
    }
}

Dalam pengawal ini, kami menggunakan struktur mux.RouteMatch gorila/mux untuk mendapatkan maklumat dan nama penghalaan semasa. Kemudian kami menggunakan pakej cache Buffalo untuk melaksanakan caching. Apabila kami menyemak cache, kami mula-mula menyemak sama ada laluan itu wujud dalam cache kami map dan kemudian menyemak sama ada terdapat padanan dengan URL permintaan dalam cache. Jika terdapat padanan, nilai cache dikembalikan, jika tidak, pengendali dijalankan dan hasilnya dicache.

Langkah 4: Gunakan pengawal cache dalam penghala

Kini kita boleh menggunakan pengawal cache dalam penghala. Kami hanya perlu menambah pengawal CacheController dalam perisian tengah penghala. Kami boleh melaksanakan proses ini menggunakan kod berikut:

func (a *App) cacheRoutes() {
    r := a.Router

    r.Use(func(next buffalo.Handler) buffalo.Handler {
        return func(c buffalo.Context) error {
            c.Set("start_time", time.Now())
            return next(c)
        }
    })

    r.Use(CacheController())
}

Dalam contoh ini, kami juga menambah perisian tengah masa mula untuk merekodkan tempoh dan prestasi permintaan.

Langkah 5: Uji cache

Kini kami boleh menguji sama ada cache kami berfungsi dengan betul. Kita boleh memulakan aplikasi Buffalo menggunakan arahan berikut:

$ buffalo dev

Kemudian kita boleh menggunakan alatan seperti curl untuk menguji cache kita. Contohnya:

$ curl http://localhost:3000/api/v1/items

Kita boleh menjalankan arahan ini beberapa kali untuk menguji cache. Pada larian pertama, cache diisi, dan larian kedua dan seterusnya akan mengembalikan nilai cache.

Kesimpulan

Dalam artikel ini, kami memperkenalkan cara menggunakan rangka kerja Buffalo untuk melaksanakan caching tempatan. Rangka kerja Buffalo sangat berguna untuk pembangunan aplikasi web kerana ia memudahkan banyak tugas dan operasi biasa. Dengan menggunakan rangka kerja Buffalo dan beberapa kebergantungan lain seperti gorila/mux dan pakej cache Buffalo, kami boleh melaksanakan caching tempatan dengan mudah dan meningkatkan prestasi serta ketersediaan aplikasi web kami.

Atas ialah kandungan terperinci Melaksanakan caching tempatan menggunakan rangka kerja web Golang rangka kerja Buffalo. 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