Golang の Web フレームワーク Buffalo フレームワークを使用したローカル キャッシュの実装

王林
リリース: 2023-06-24 09:21:06
オリジナル
1080 人が閲覧しました

ローカル キャッシュは Web 開発で一般的に使用されるテクノロジであり、Web アプリケーションのパフォーマンスと可用性を向上させることができます。開発プロセスでは、特定のフレームワークを使用してローカル キャッシュを実装する必要があることがよくありますが、この記事では、Golang の Web フレームワークである Buffalo フレームワークを使用してローカル キャッシュを実装する方法を紹介します。

Buffalo フレームワークは、Golang 言語をベースに開発された Web フレームワークです。 Buffalo フレームワークでは、ローカル キャッシュを簡単に実装でき、Web アプリケーションのパフォーマンスを大幅に向上させることができます。以下では、Buffalo フレームワークを使用してローカル キャッシュを実装する方法を紹介します。

ステップ 1: 新しい Buffalo アプリケーションを作成する

Buffalo フレームワークを使用してローカル キャッシュを実装するには、まず新しい Buffalo アプリケーションを作成する必要があります。次のコマンドを使用して、新しい Buffalo アプリケーションを作成できます:

$ buffalo new myapp
ログイン後にコピー

これにより、myappという名前の新しい Buffalo アプリケーションが作成されます。

ステップ 2: Gorilla/mux 依存関係を追加する

Gorilla/mux を HTTP ルーターとして使用します。このためには、gorilla/mux の依存関係を追加する必要があります。これを行うには、go.modファイルに次の行を追加します。

require github.com/gorilla/mux v1.8.0
ログイン後にコピー

次に、次のコマンドを実行して依存関係をダウンロードします。

$ go mod download
ログイン後にコピー

ステップ 3: 作成キャッシュ コントローラー

すべてのリクエストを処理するキャッシュ コントローラーを作成する必要があります。CacheControllerという新しいファイルを作成し、次のコードを追加します。

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 } }
ログイン後にコピー

このコントローラーでは、ゴリラ/マルチプレクサのmux.RouteMatchStructure を使用して現在のルーティング情報と名前。次に、Buffalo のcacheパッケージを使用してキャッシュを実装します。キャッシュをチェックするときは、まずルートがキャッシュmapに存在するかどうかを確認し、次にキャッシュ内にリクエスト URL と一致するものが存在するかどうかを確認します。一致する場合はキャッシュされた値が返され、一致しない場合はハンドラーが実行され、結果がキャッシュされます。

ステップ 4: ルーターでキャッシュ コントローラーを使用する

これで、ルーターでキャッシュ コントローラーを使用できるようになります。ルーターのミドルウェアにCacheControllerコントローラーを追加するだけです。次のコードを使用してこのプロセスを実装できます:

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()) }
ログイン後にコピー

この例では、リクエストの期間とパフォーマンスを記録する開始時間ミドルウェアも追加します。

ステップ 5: キャッシュをテストする

これで、キャッシュが適切に動作しているかどうかをテストできます。次のコマンドを使用して Buffalo アプリケーションを起動できます:

$ buffalo dev
ログイン後にコピー

その後、curl などのツールを使用してキャッシュをテストできます。例:

$ curl http://localhost:3000/api/v1/items
ログイン後にコピー

このコマンドを複数回実行して、キャッシュをテストできます。最初の実行でキャッシュがいっぱいになり、2 回目以降の実行ではキャッシュされた値が返されます。

結論

この記事では、Buffalo フレームワークを使用してローカル キャッシュを実装する方法を紹介しました。 Buffalo フレームワークは、多くの一般的なタスクと操作を簡素化するため、Web アプリケーション開発に非常に役立ちます。 Buffalo フレームワークと、ゴリラ/マルチプレクサや Buffalo のキャッシュ パッケージなどの他の依存関係を使用することで、ローカル キャッシュを簡単に実装し、Web アプリケーションのパフォーマンスと可用性を向上させることができます。

以上がGolang の Web フレームワーク Buffalo フレームワークを使用したローカル キャッシュの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!