라라벨로 배우는 실전 PHP 웹 프로그래밍
PART 1 라라벨 입문
12. 즉시 로드와 페이징
프로그래머는 항상 극단적인 상황을 고려하며 코드를 작성해야 한다. 웹 개발에서 가장 극단적인 상황 중 하나가 큰 데이터다. 일억 개의 데이터베이스 레코드에 대고 SELECT * FROM big_table where foo LIKE ‘%bar%’ 같은 쿼리를 날렸다거나, 운이 좋아 쿼리 결과가 천건만 나옸는데 이 결롸를 뷰에 바인딩해서 웹 브라우저로 내보낸다고 상상해 보자. 두 경우 모두 컴퓨터 및 네트워크 자원을 많이 사용할 뿐만 아니라, 결과를 얻거나 화면을 출력하는 데 오랜 시간이 걸린다. 문제 해결은 인프라나 데이터페이스 등 어느 한 부분에서만 한다고 다 되는 것이 아니다. 이때 라라벨이 할 수 있는 조치는 즉시 로드와 페이징이다. 극단적인 상황을 머릿속에 그려 보며 개발하는 것은 좋은 습관이다.
12.1 즉시 로드
천 건의 데이터를 뷰에 표현할 때, 연결된 테이블 값을 가져와야 할 수도 있다. 어떤 시나리오인지 경험해 보자
routes/web.php
1
2
3
4
5
6
7
8
9
10
11
<?php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index');
Route::resource('articles', 'ArticlesController');
app/Http/Controllers/ArticlesController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class ArticlesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$articles = \App\Article::get();
return view('articles.index',compact('articles'));
}
}
코드 12-3을 참고해서 포럼 글 목록을 표시할 뷰를 만들자. 9장을 공부할 때, 라라벨이 자동으로 만든 마스터 레이아웃()을 상속한다.
Comments powered by Disqus.