개발
라라벨 6.x
라라벨 쿠키를 이용한 손쉬운 조회수 기능 추가
우리가 흔히 특정 게시글이나 페이지뷰에 대해서 조회수 기능(hit count)을 붙일때면 조회시에
post
모델의 hit
값을 1 올리는 incresement
작업으로 수행한다.$post->increment('hit');
Copy
근데 이 방식으로하면 해당 페이지를 계속 요청하는, 일련의 새로고침 연타로도 계속 조회수가 상승한다.
이런걸 막기위해서는 세션이나 쿠키를 사용해서 조회했던 페이지를 기억해놓고 조회시 이를 체크하는 과정을 통해 구현할 수 있다.
라라벨에서는 백단에서도 간단히
cookie
함수를 이용해서 아래와 같이 구현 할 수 있다.public function showPost($id, Request $request)
{
$post = Post::find($id);
// 사용자에게 hit 카운트를 증가시켰는지 확인하기 위한 쿠키 이름
$cookieName = 'erulabo_post_' . $id;
// 쿠키가 존재하지 않으면 조회수(hit) 증가
if (!$request->cookie($cookieName)) {
// 조회수 증가
$post->increment('hit');
// 쿠키 설정 (1일 동안 유지)
$cookie = cookie($cookieName, true, 1440); // 1440 분 = 1일
return response()
->view('view', compact('post'))
->cookie($cookie);
}
return view('view', compact('post'));
}
Copy
앞단에서 쿠키를 확인하면 아래와 같이 정상 기록이 되었음을 확인할 수 있다.

241007 추가
이거 이거 매우 안좋은 방법이다. 게시글마다 쿠키를 일일히 만들어버리니까 쿠키사이즈가 순식간에 올라가서 http 헤더사이즈가 너무 커져버리고 이러면 웹서버에서 해당 요청을 차단해버리는 문제가 발생한다.
이 방식으로 게시글별로 read 값을 관리하고싶다면 브라우저 쿠키 방식 보다 서버 세션 방식이 훨씬 나은것 같다.

라라벨에서 세션을 이용한 손쉬운 조회수 기능 추가 - eruLabo
라라벨에서 쿠키를 이용한 손쉬운 조회수 기능 추가 - eruLabo우리가 흔히 특정 게시글이나 페이지뷰에 대해서 조회수 기능(hit count)을 붙일때면 조회시에 post 모델의 hit값을 1 올리는 incresement 작업으로 수...
https://erulabo.com/181
#Laravel
0
개의 댓글
라라벨 6.x 콜렉션의 다른 글
개발 카테고리의 다른 글
10/07/2024
라라벨 세션을 이용한 손쉬운 조회수 기능 추가
라라벨에서 쿠키를 이용한 손쉬운 조회수 기능 추가 - eruLabo우리가 흔히 특정 게시글이나 페이지뷰에 대해서 조회수 기능(hit...

09/30/2024
CSS 그라데이션, 그림자 시뮬레이터 사이트
가끔 퍼블지원 하다가 그라데이션이나 그림자 시뮬레이터로 빠르게 제작할때 보는 사이트들을 나열해 보았다. CSS 그라디언트CSS...
09/26/2024
Javascript 함수 중복 호출 막기(제어)
앞단 서브밋에 해당하는 특정 함수를 여러번 실행되지 못하게 막을 필요성이 있어서 아래와 같은 함수를 적용해보았다. 원리는...