データベースクエリの最適化
// インデックスの使用
$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) {
// ユーザーを処理
}
});
PHPEager 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();
JavaScriptBlade テンプレートでの使用
<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
コメント