꾸준히 안타치기
페이징을 왜 써야할까? 본문
서버에서 게시글호출 중.. 페이징 처리에 대해서 생각하게 됬다. 페이징을 하지 않았을 경우의 문제점에 대해 생각해보게 되었는데 클라이언트와 서버입장으로 생각해보았다.
서버 측 문제점
많은 양의 데이터가 저장된 경우 한번에 읽어 올 경우에 처리속도가 늦어진다.
클라이언트 측 문제점
데이터를 읽어오는 범위를 잘못설계시, 데이터가 낭비될 수 있다.
데이터를 받는데도 시간이 오래걸리고, 받을때도 네트워크 자원을 필요이상으로 소모하게 된다.
but, 너무 작은 크기로 쪼개면 통신횟수가 늘어나므로 이 또한 문제
통신횟수를 크게 늘리지 않으면서 너무크지 않은 적절한 데이터를 나누어 주고 받도록 구성해야함.
서버 측에서도 나누어 받을 수 있도록 기능을 제공해야함.
클라이언트 측
Get방식으로 API를 호출할때 호출할 페이지 번호를 실어서 보낸다. Get에서는 별도의 파라미터를 전송하지 않고 모두 URL뒤에 엮어서 쿼리 스트링(Query String) 방식으로 전송한다.
앱화면에서 이미지를 *개씩 가져오게 하였고, 마지막 게시글이 화면 하단 스크롤에 닿으면 더보기 버튼을 띄우고,
더보기 버튼을 누를때마다 API를 호출해 페이지를 추가로 가져오게 하였다.
- HTTP Method: Get
- Content-Type: application/json
요청(Request)
page | 조회하고자 하는 페이지 번호 |
userID | 특정사용자의 게시글만 받아올 경우 |
perPage | 각 페이지당 게시물 수 |
응답(Response)
perPage | 각 페이지당 게시물 수 |
totalPage | 전체 페이지 수 |
currentPage | 전송된 페이지 |
서버측 (서비스)
페이지 번호를 받고, 보여줄 페이지당 게시글 수를 뿌려준다.
SET @rownum:=0; //@rownum은 0부터시작
SELECT
@rownum:= @rownum+1, AS ROWNUM //@rownum+1을 @rownum에 담고 ROWNUM행에 넣는다.
board.* FROM board // board테이블의 모든행을 board테이블로 지정
order by date desc // 날짜컬럼행 역순으로 정렬
limit $start ,$per_page; // 페이지부터 ~장만큼을 보여준다.
Mysql의 rownum이라는 것을 사용해서 index를 재 정의한뒤에 역순정렬하고
시작페이지와 보여줄게시글 갯수를 정하고 쿼리를 뿌려주었다.
뉴렉처샘의 오라클 방법 참고
https://www.youtube.com/playlist?list=PLq8wAnVUcTFWxwoc41CqmwnO-ZyRDL0og
https://www.youtube.com/watch?v=-YjsGGCAtik&list=PLq8wAnVUcTFWxwoc41CqmwnO-ZyRDL0og&index=18
Mysql 방법설명
https://dawitblog.tistory.com/8
https://okky.kr/article/1100377
'iOS > 문제해결' 카테고리의 다른 글
앱스토어 배포 참고링크 (0) | 2022.06.18 |
---|---|
NotificationCenter를 사용해 새로고침, 여러번 호출되는 문제해결 (0) | 2022.06.09 |
URL encoding , 한글인코딩 (0) | 2022.06.07 |
애플의 iOS 리뷰 가이드라인 (0) | 2022.05.26 |
AWS EC2 프리티어 비용관련 설정 문제 (0) | 2022.05.16 |