Laravel逆引きTips – パフォーマンス最適化

Laravel Laravel

Laravel逆引きTIps一覧へ戻る

データベースクエリの最適化

// インデックスの使用
$users = DB::table('users')->where('status', 'active')->index('status')->get();

// 必要なカラムのみ選択
$users = User::select('id', 'name', 'email')->get();

// クエリの結果をカウント
$count = User::where('status', 'active')->count();

// チャンクを使用して大量のデータを処理
User::chunk(100, function ($users) {
    foreach ($users as $user) {
        // ユーザーを処理
    }
});
PHP

Eager Loading の活用

// N+1問題を解決
$posts = Post::with('comments')->get();

foreach ($posts as $post) {
    echo $post->comments->count();
}

// 複数のリレーションをEager Load
$users = User::with(['posts', 'profile'])->get();
PHP

    // 3. キャッシュの効果的な使用
    public function effectiveCaching()
    {
        // データのキャッシュ
        $users = Cache::remember('all_users', 3600, function () {
            return User::all();
        });

        // ビューのキャッシュ
        if (Cache::has('home')) {
            return Cache::get('home');
        }

        $view = view('home')->render();
        Cache::put('home', $view, 3600);
        return $view;
    }
PHP

アセットの最適化

Laravel Mix の使用例(webpack.mix.js)

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css')
   .version();
JavaScript

Blade テンプレートでの使用

<link rel="stylesheet" href="{{ mix('css/app.css') }}">
<script src="{{ mix('js/app.js') }}"></script>
HTML

キューの利用

// ジョブのディスパッチ
ProcessPodcast::dispatch($podcast);

// 遅延ディスパッチ
ProcessPodcast::dispatch($podcast)->delay(now()->addMinutes(10));
PHP

キューワーカーの起動(コマンドライン)

php artisan queue:work
Bash

ページネーションの実装

// 基本的なページネーション
$users = User::paginate(15);

// カスタムページネーション
$users = User::where('votes', '>', 100)->paginate(15);
PHP

ビューでのページネーションリンクの表示

{{ $users->links() }}
HTML

Laravel逆引きTIps一覧へ戻る

Follow me!

コメント

PAGE TOP
タイトルとURLをコピーしました