테스트는 안 해봤는데, 아래처럼 하면 되지않을까요?
$articles = \Cache::remember($cacheKey, 5, function () use ($query) {
return $query->paginate(5);
});
아 제가 하려는것은 paginate를 5로 한정짓지 않고 무한 스크롤을 만들려는 것입니다ㅠㅠ 안되는것 알지만 그냥
$articles = \Cache::remember($cacheKey, 5, function () use ($query) { return $query->get(); });
이런거요 ㅠ
무한 스크롤과 캐시는 어울리지 않습니다. 목록을 최신 순으로 나열한다고 가정했을 때, 아래와 같이 쿼리를 구성해 보시면 어떨까요?
$query = (new Article)->newQuery(); $lastItemId = $request->input('last_item_id'); if ($lastItemId !== null) { $query->where("id", '<', $lastItemId); } return $query->latest()->paginate(5);
클라이언트 쪽에서 GET /articles?last_item_id=100 으로 요청하면 서버는 99~95를 응답합니다.
다시 클라이언트가 GET /articles/?last_item_id=95 로 요청하면 서버는 94~90을 응답합니다.
직접 구현이 어려우시다면, 구글에서 "laravel infinite scroll"로 찾아 보세요.
이 메소드에서
이부분에 paginate를 없애고 싶어서
말은 없는것같은데요... 혹시 저 상태에서 paginate없이 캐쉬값을 받아오고 싶다면 어떻게 해야 할까요?