해결된 질문
작성
·
57
·
수정됨
2
강의를 보다가 궁금증이 생겨서 질문합니다.
만약 로그인 안 한 사용자(회원X)도 볼 수 있는 게시글이라고 할 때, 조회수를 어떻게 해야하는 건가요?
로그인 한 사람(회원O)만 게시글을 볼 경우 중간테이블을 만들어 이미 봤다면 조회수를 안 올리기 위해 만든 다는 것까지는 이해했습니다.
제가 생각한 방식은
게시글에 컬럼에 로그인 안 한 사용자의 조회수 넣기(그냥 수로 관리)
로그인한 사용자의 경우는 중간테이블로 조회수 관리
데이터를 따로 관리해서 이 둘을 합산해서 총 조회수로 만든다 인데
제가 너무 복잡하게 생각한 건지, 다른 좋은 방법이 있는지 궁금합니다
답변 1
1
안녕하세요 띵똥님! 좋은 질문 해주셨네요😊
조회수를 구현할 때는
특정 유저가 악의적으로 매번 새로고침을 통해 조회수를 올리는 행위를 막을 수 있어야 합니다.
말씀해주신 1번째 방식(게시글 컬럼에 로그인 안 한 사용자의 조회수 넣기)으로 구현하게 되면
악의적으로 조회수를 올려버릴 수 있게 됩니다.
그래서 이걸 방지하기 위해 로그인 안 한 사용자를 구별하기 위해서
일반적으로 IP 주소를 같이 기록해놓기도 합니다.
그럼 중간 테이블을 아래와 같이 구성할 수 있습니다.
views (조회수 테이블)
id : PK
postId : 게시글 id (FK)
userId : 사용자 id (FK), Null 허용
ipAddress : IP 주소
이 외로 궁금하신 점 있으시면 또 질문 남겨주세요:)
IP 주소, 세션 정보, 디바이스 정보 이렇게 다양하게 수집해서 구별하는 서비스도 있고
IP 주소 또는 세션 정보만 수집하는 경우도 있습니다~!
일반적인 서비스에서는 IP 주소 정보를 가지고 구별을 많이 하는 걸로 알고 있습니다:)
오 ip주소 넣는 방법이 있었군요. 찾아보니 세션 id를 사용하는 경우도 있다고 하는데 현업에서는 보통 ip 주소를 사용하나요?