私は、動的にメニュー項目を管理laravelでフォームを実装しようとしている、と私はこの偉大なパッケージが見つかりました:(パフォーマンスの観点で)、ミドルウェアを使用してLaravelの各要求でデータベースからオブジェクトをロード
私は、アプリケーションのすべてのルートにミドルウェアを適用し、そのミドルウェアで、シリアル化された/ JSONedオブジェクトをデータベースからロードし、このサンプルコードをガイドラインとして使用します。メニューをロードして、すべてのアプリケーションページで使用できるようにします。
Menu::make('MyNavBar', function($menu){
$menu->add('Home');
$menu->add('About', 'about');
$menu->add('services', 'services');
$menu->add('Contact', 'contact');
});
さらに、パフォーマンスを向上させるためにDBから来るメニューオブジェクトをキャッシュすることを考えています。
これを実行するより良い方法はありますか? (すべての観点、特にパフォーマンスから)。
ありがとうございました。
そして、その後、これを処理するためのモデルオブザーバーとキャッシュを使用し、ミドルウェアより..etc(優れたメニュー項目を処理するために、View Composerを使用するウルマスターレイアウトに部分的なメニューが含まれ、これは単に一般的な考え方である –
@AchrafKhouadja 次に、ビュー・コンポーザーを使用すると、メニュー・オブジェクトがメニュー・テンプレートがロードされたときにのみ使用可能になることを意味しますか? モデルオブザーバは、メニューが更新されたときにのみキャッシュを変更します。これはパフォーマンスを向上させますか? しかし、キャッシュ/ DBからメニューオブジェクトはどこにロードされますか? –
メニューオブジェクトはあなたが選択したアノテーションで利用できるようになります。コンポーザーのドキュメントとexemplesを確認してください(iaビットのビジー状態からコードを提供することはできません) '$ value = Cache :: remember( 'users'、60、function(){ここでロジックを入れてください return $ menu_object; });この方法では、キャッシュから取得できる場合はキャッシュから取得し、そうでない場合はクエリを実行して60分キャッシュし、永久にキャッシュしてモデルオブザーバを実装します –