목록 나눠 보기
주문이 천 건이 되면 한 번에 다 불러오는 화면은 멈춰요. 20건씩 끊어서 불러오면 화면이 바로 열리고, 서버가 읽고 보내는 양이 줄어서 요금도 같이 줄어요.
쉽게 말하면
손님이 "어떤 물건 있어요?" 하고 물을 때, 창고에 있는 물건 3천 개를 전부 계산대에 쌓아 올리는 가게는 없어요. 한 판만 꺼내 보여 주고, 더 보고 싶다고 하면 다음 판을 꺼내죠. 목록 화면도 똑같아요. 주문 천 건을 한 번에 다 꺼내면 계산대가 무너져요. 20건만 꺼내 놓고, 손님이 더 달라고 할 때 다음 20건을 꺼내는 것이 목록 나눠 보기예요.
손님 20명일 때는 아무 문제 없어요. 천 건이 되면 화면이 빙글빙글 돌다가 멈춘 것처럼 보여요.
건수가 만 건이 되어도 처음 화면이 열리는 속도는 똑같아요. 대부분의 손님은 첫 판만 보고 나가요.
여기서 중요한 건 기록을 지우는 게 아니라는 점이에요. 천 건은 그대로 다 남아 있어요. 한 번에 들고 나오는 양만 줄이는 거예요. 그래서 목록 나눠 보기는 손님 기록이 사라질 걱정 없이 손볼 수 있는 부분이에요.
이런 증상이면 이 얘기예요
이 문제는 "고장"처럼 보이지 않아요. 어느 날부터 화면이 조금 느려지고, 몇 달 뒤에는 아예 안 열려요. 손님이 늘어난 만큼 정확히 비례해서 나빠지기 때문에, 잘되고 있을 때 처음 티가 나요.
| 보이는 증상 | 실제로 벌어지는 일 |
|---|---|
| 목록 화면만 유난히 오래 돈다 | 화면을 그리기 전에 기록 전체를 다 받아 오는 중이에요. 받을 게 늘어난 만큼 기다림도 늘어요 |
| 휴대폰에서만 심하게 느리다 | 받아 온 수천 줄을 그리는 일은 기기가 해요. 데스크톱은 버티고 휴대폰은 못 버텨요 |
| 스크롤을 내리면 뚝뚝 끊긴다 | 화면에 안 보이는 줄까지 전부 그려 놓은 상태예요. 사진까지 딸려 있으면 더 심해요 |
| 더보기를 눌렀는데 아까 본 게 또 나온다 | "앞의 20개 건너뛰고 다음 20개"로 세는 방식인데, 그 사이 새 주문이 들어와 줄이 한 칸 밀린 거예요 |
| 뒤쪽 페이지로 갈수록 느려진다 | 건너뛰라고 한 만큼은 세면서 지나가야 해요. 100쪽은 앞의 1,980건을 세고 나서 20건을 줍는 셈이에요 |
| 데이터 전송량이나 서버 사용량 청구가 계속 오른다 | 손님 한 명이 목록을 열 때마다 전체를 읽고 보내요. 방문이 늘면 그만큼 곱해져요 |
마지막 줄이 사장님 지갑에 직접 닿는 부분이에요. 대부분의 호스팅과 데이터베이스 요금은 읽은 양과 보낸 양으로 계산돼요. 필요 없는 980건을 매번 같이 실어 보내면, 그 짐값을 매달 내고 있는 거예요. 목록을 AI에게 요약시키는 화면이라면 부르는 양이 곧 AI 요금이 돼요.
AI에게 그대로 말할 문장
고칠 때 사장님이 할 일은 증상을 골라 문장을 붙여 넣는 것뿐이에요. 왼쪽에서 내 증상을 찾아 오른쪽을 복사해 쓰면 돼요.
| 내 증상 | 채팅에 붙여 넣을 주문 |
|---|---|
| 목록이 안 열리거나 너무 느려요 | "주문 목록을 최신순 20건씩만 불러오고, 목록 아래에 더보기 버튼을 붙여 주세요. 처음 열 때는 20건만 가져오게 해 주세요." |
| 더보기를 누르면 같은 항목이 또 보여요 | "정렬을 만든 시각 최신순으로 고정하고, 시각이 같으면 주문번호로 한 번 더 정렬해 주세요. 그리고 마지막으로 본 항목 다음부터 이어서 불러오는 방식으로 바꿔 주세요." |
| 뒤쪽 페이지가 유난히 느려요 | "쪽 번호로 건너뛰는 방식 대신, 마지막으로 본 항목을 기준으로 그다음 20건을 가져오는 방식으로 바꿔 주세요." |
| 휴대폰에서 스크롤이 끊겨요 | "목록을 20건씩 이어 불러오게 하고, 화면 밖에 있는 사진은 스크롤이 닿을 때 불러오게 해 주세요." |
| 총 건수를 띄우니 화면이 느려요 | "총 건수는 화면에서 빼고, 다음 쪽이 남아 있는지만 알려 주세요. 다 불러왔으면 더보기 버튼을 감춰 주세요." |
| 검색하면 결과가 일부만 나와요 | "검색이나 필터가 걸린 상태에서도 끊어 불러오기가 이어지게 하고, 조건을 바꾸면 첫 쪽부터 다시 불러오게 해 주세요." |
| 불러오는 동안 화면이 하얘요 | "불러오는 동안에는 목록 자리에 회색 자리표시를 보여 주고, 실패하면 다시 시도 버튼을 띄워 주세요." |
숫자는 사장님이 정해 주세요
"적당히 나눠 주세요"라고만 말하면 결과가 매번 달라져요. 한 번에 몇 건인지, 무엇을 기준으로 정렬할지, 더보기 버튼인지 스크롤 자동인지 이 세 가지를 문장에 넣으면 원하는 화면이 한 번에 나와요.
고친 뒤 이렇게 확인해요
- 1목록 화면을 처음 열 때 몇 건이 보이는지 세어 보세요. 정해 준 숫자만큼만 보여야 해요.
- 2더보기를 연달아 세 번 눌러 보세요. 같은 항목이 다시 나오지 않는지, 순서가 계속 이어지는지만 보면 돼요.
- 3마지막까지 눌러 보세요. 끝에 닿았을 때 버튼이 사라지거나 끝이라는 표시가 나와야 해요.
- 4검색이나 필터를 걸고 다시 해 보세요. 조건을 바꾼 순간 첫 쪽으로 돌아가야 정상이에요.
- 5휴대폰에서 한 번 더 해 보세요. 손님 대부분은 휴대폰으로 봐요.
다섯 개가 다 통과하면 끝이에요. 하나라도 어긋나면 그 항목을 그대로 문장으로 만들어 다시 주문하면 돼요. "더보기를 세 번 누르면 같은 항목이 다시 나와요"처럼 눈에 보인 그대로 말하는 게 가장 잘 통해요.
나누는 방식은 크게 세 가지
| 방식 | 손님이 보는 모습 | 어울리는 곳 |
|---|---|---|
| 쪽 번호 | 아래에 1 2 3 … 이 깔리고 원하는 쪽으로 바로 뛰어요 | 사장님 관리 화면. "지난달 그 주문"을 다시 찾아가야 할 때 편해요 |
| 더보기 버튼 | 20건 보고, 더 보고 싶으면 버튼을 눌러요 | 가장 안전한 기본값이에요. 손님이 언제 멈출지 스스로 정해요 |
| 스크롤 자동 | 아래로 내리면 알아서 다음 20건이 붙어요 | 사진 위주의 둘러보기 화면. 대신 맨 아래 안내나 문의 버튼에 닿기 어려워져요 |
겉모습은 셋이 다르지만, 속에서 부르는 방법은 두 가지로 갈려요. 몇 개 건너뛰고 몇 개 주세요와 마지막으로 본 것 다음부터 몇 개 주세요예요. 앞의 것은 쪽으로 뛰기 편하지만 뒤쪽이 느려지고 줄이 밀려요. 뒤의 것은 몇 만 건이 되어도 속도가 그대로지만 "37쪽으로 바로"가 어려워요.
- 1손님이 보는 화면이고 계속 쌓이는 목록이라면 더보기 버튼 + 마지막으로 본 것 기준으로 가요. 가장 사고가 적어요.
- 2사장님 관리 화면이라면 쪽 번호도 좋아요. 관리 화면은 여는 사람이 사장님뿐이라 뒤쪽이 조금 느려도 견딜 만해요.
- 3스크롤 자동을 쓸 거면 맨 아래에 있던 내용을 위로 옮겨 주세요. 목록이 끝나지 않으니 아래는 아무도 못 봐요.
정렬 기준을 고정하는 일은 방식과 별개로 늘 필요해요. 기준이 흔들리면 같은 항목이 두 번 나오거나 하나가 통째로 빠져요. 손님은 그걸 "목록이 이상해요"라고 문의해요.
지금은 신경 쓰지 않아도 되는 때
목록이 있다고 다 나눠야 하는 건 아니에요. 위로 자라지 않는 목록은 그냥 두는 게 맞아요. 안 해도 되는 일을 미리 해 두면, 코드는 복잡해지고 화면은 더 불편해져요.
| 이런 목록이면 | 왜 그냥 둬도 되나 |
|---|---|
| 메뉴판, 지점 안내, 요금표 | 늘어도 스무 개 안쪽이에요. 상한이 뻔한 목록은 한 번에 보여 주는 게 손님에게 더 편해요 |
| 이제 문 연 서비스의 주문 목록 | 지금 30건이면 아무 문제 없어요. 몇 백 건이 보이기 시작할 때 손보면 늦지 않아요 |
| 사장님 혼자 하루 한 번 보는 화면 | 2초 걸려도 하루 한 번이면 참을 수 있어요. 손님 화면을 먼저 고치는 게 남는 장사예요 |
| 엑셀로 내려받는 기능 | 여기는 일부러 전부 필요해요. 나눠 받으면 오히려 반쪽 파일이 돼요. 엑셀로 내려받기 쪽 규칙을 따라요 |
| 장바구니, 오늘 예약 같은 짧은 목록 | 성격상 몇 건을 넘지 않아요. 여기에 더보기 버튼이 붙으면 이상한 화면이 돼요 |
판단 기준 한 줄
"이 목록은 1년 뒤에 몇 줄이 될까?" 답이 "지금과 비슷"이면 그냥 두세요. "열 배"나 "모르겠다"면 나누세요. 주문·문의·후기·회원 목록은 거의 항상 뒤쪽이에요.
여기서 자주 어긋나요
더보기 버튼이 달렸는데도 화면이 여전히 느린 경우가 있어요. 그중 절반은 같은 원인이에요. 기록은 전부 받아 놓고, 화면에서만 20개씩 잘라 보여 주고 있는 것이에요. 손님 눈에는 나눠 보기처럼 보이지만 서버가 하는 일은 하나도 줄지 않았어요.
요금도 속도도 그대로예요. 더보기 버튼은 이미 받아 둔 걸 보여 주기만 해요.
부르는 양 자체가 줄어요. 이래야 속도와 요금이 같이 내려가요.
구별하는 방법은 간단해요. AI에게 "이 목록이 서버에서 20건만 받아 오는지, 전체를 받아 놓고 화면에서만 자르는지 알려 주세요"라고 물어보면 돼요. 후자면 "서버 요청 단계에서 20건씩만 받아 오도록 바꿔 주세요"라고 이어서 주문하세요.
두 번째로 흔한 어긋남은 목록마다 규칙이 다른 것이에요. 주문은 20건씩, 문의는 전부, 후기는 50건씩이면 나중에 손볼 때마다 사람이 헷갈려요. 처음 정할 때 "우리 서비스의 목록은 20건씩, 더보기 버튼"처럼 한 줄로 정해 두고 그 문장을 계속 쓰는 게 편해요.
새로 들어온 항목은 어디로?
손님이 목록을 보고 있는 동안 새 주문이 들어오면, 그것을 몰래 끼워 넣지 않는 편이 나아요. 보던 자리가 흔들려요. "새 주문 3건 보기" 같은 버튼을 위에 띄우고 손님이 누를 때 반영하는 방식이 덜 어지러워요.
실제로 겪는 장면
장면 1 · 외주 개발자가 말했다
“목록은 페이지네이션 걸어 뒀어요. 오프셋 말고 커서 방식으로요.”
이제 해석돼요. 목록을 끊어서 불러오게 했고, 몇 개 건너뛰는 방식이 아니라 마지막으로 본 것 다음부터 이어 오는 방식으로 했다는 뜻이에요. 뒤쪽이 느려지지 않고 줄이 밀리지도 않는, 더 좋은 쪽을 고른 거예요.
장면 2 · 손님 문의가 들어왔다
“후기 화면에서 아래로 내리다 보면 똑같은 후기가 두 번 보여요. 제 후기는 아무리 내려도 안 나와요.”
화면이 잘못 그려진 게 아니라 세는 기준이 흔들린 거예요. 손님이 보고 있는 동안 새 후기가 올라오면 줄이 한 칸씩 밀려서, 이미 본 것이 다시 오거나 하나가 건너뛰어져요. 정렬을 고정하고 마지막으로 본 항목 기준으로 이어 오게 바꾸면 사라지는 증상이에요.
장면 3 · 청구서를 보고
“방문자는 두 배 늘었는데 서버 요금은 다섯 배가 됐어요.”
목록 한 번 열 때마다 전체를 읽어 보내고 있으면, 기록이 쌓인 배수와 방문이 늘어난 배수가 곱해져요. 방문 2배에 기록 2.5배면 짐은 5배가 돼요. 끊어 불러오기로 바꾸면 방문이 늘어도 한 번에 나가는 짐은 그대로예요.
같이 챙겨야 화면이 완성돼요
끊어 불러오기만 넣으면 화면이 어색해지는 지점들이 있어요. 아래 다섯 개를 같은 주문에 얹어 두면 마무리까지 깔끔해져요.
- 1불러오는 중 표시. 버튼을 눌렀는데 아무 반응이 없으면 손님은 두 번, 세 번 눌러요. 기다리는 중 화면 처리를 같이 넣어요.
- 2다 불러왔을 때. 더보기 버튼이 계속 남아 있으면 눌러도 아무 일이 없어요. 마지막이면 버튼을 감추거나 "여기까지예요"로 바꿔요.
- 3한 건도 없을 때. 첫 쪽부터 비어 있으면 하얀 화면이 돼요. 텅 빈 화면 안내를 넣어 둬요.
- 4검색·필터와의 합. 조건이 바뀌면 반드시 첫 쪽부터 다시 세야 해요. 내 서비스 안 검색과 함께 쓸 때 가장 많이 새는 곳이에요.
- 5실패했을 때. 다음 쪽을 못 받아 오면 목록이 조용히 멈춰요. 다시 시도 버튼이 있어야 손님이 빠져나가지 않아요.
그리고 끊어 불러오기는 느려진 목록 되살리기(인덱스)와 짝이에요. 가져오는 양을 줄이는 게 이 문서고, 그 20건을 빨리 찾아내는 게 인덱스예요. 둘 다 해야 목록 화면이 진짜로 가벼워져요.
자주 묻는 것
- Q. 한 번에 몇 건이 적당해요?
- 화면에 보이는 만큼 조금 더 넉넉하게가 기준이에요. 글자 위주 목록은 20건에서 50건 사이로 잡는 게 오래된 관례고, 사진이 큼직하게 들어가는 목록은 10건에서 20건이 편해요. 정답은 없으니 사장님 화면에서 첫 판이 화면을 살짝 넘기는 정도로 맞춰 보세요.
- Q. 이걸 넣으면 손님이 뒷장을 안 보게 되지 않을까요?
- 이미 대부분의 손님은 첫 판만 봐요. 오히려 다 불러오다 멈추는 화면에서는 첫 판도 못 봐요. 뒷장까지 보게 하고 싶으면 목록을 길게 만드는 게 아니라 검색과 정렬을 잘 만들어 주는 쪽이 효과가 커요.
- Q. 총 건수를 꼭 보여 주고 싶은데요
- 보여 줄 수 있어요. 다만 총 건수를 세는 일은 20건을 가져오는 일보다 무거울 수 있어요. 기록이 아주 많아지면 정확한 숫자 대신 대략치로 적거나, 사장님 관리 화면에만 두는 방법을 써요.
- Q. 스크롤 자동이 더 요즘 느낌인데 그걸로 하면 안 돼요?
- 써도 돼요. 대신 두 가지를 잊지 마세요. 목록이 끝나지 않으니 화면 맨 아래에 있던 안내나 문의 버튼은 아무도 못 봐요. 그리고 손님이 뒤로 갔다 돌아오면 보던 자리를 잃기 쉬워요. 손님 상담이 걸린 화면이면 더보기 버튼이 안전해요.
- Q. 이미 만들어 놓은 화면도 나중에 바꿀 수 있어요?
- 네, 화면 구조를 크게 건드리지 않고 바꿀 수 있는 편이에요. 기록은 그대로 두고 가져오는 양만 바꾸는 일이니까요. 다만 목록에 딸린 검색·필터가 많을수록 손볼 곳이 늘어나요. 그래서 손님이 가장 많이 여는 목록 하나부터 고치고, 나머지는 필요할 때 하나씩 옮겨 가는 순서를 권해요.
- Q. 관리자 화면에서 천 건을 한 번에 보고 싶을 때는요?
- 그럴 때는 목록 화면이 아니라 내려받기로 푸는 게 정석이에요. 화면은 20건씩 보여 주고, 전체가 필요할 때는 파일로 받아서 엑셀에서 보는 거예요. 눈으로 천 줄을 훑는 것보다 그게 실제로 빨라요.
확인해 보세요
후기 목록에서 아래로 내릴 때 같은 후기가 두 번 보인다는 문의가 들어왔어요. 가장 그럴듯한 원인은요?
하나 더
다음 중 지금 당장 나눠 보기를 넣지 않아도 되는 목록은요?
직접 해보기
내 목록 화면을 열어 확인해 보세요
스튜디오에서 만든 화면 중 목록이 있는 곳을 열어 보세요. 아래까지 내렸을 때 끝이 나오는지, 더보기 버튼이 있는지만 보면 돼요. 끝까지 그냥 나온다면 지금은 기록이 적어서 그런 거예요. 위 표의 주문 문장을 그대로 채팅에 붙여 넣어 보세요.
스튜디오 열기더 깊이 (안 읽어도 괜찮아요)
왜 뒤쪽 쪽수가 더 느린가 · "앞의 1,980건은 건너뛰고 그다음 20건"이라고 부탁하면, 데이터베이스는 건너뛸 1,980건을 그냥 무시하지 못해요. 몇 번째인지 알아야 건너뛸 수 있으니 세면서 지나가요. 그래서 1쪽은 빠르고 100쪽은 느려요. 반면 "이 시각 이후의 20건"이라고 부탁하면 색인을 따라 그 자리로 바로 가서 20건만 집어 와요. 몇 쪽이든 속도가 같은 이유예요.
총 건수 세기가 목록보다 비쌀 수 있어요 · "20건 가져오기"는 20건만 만지지만 "총 몇 건인지"는 조건에 맞는 것을 전부 세야 알 수 있어요. 목록은 가볍게 만들어 놓고 화면 위에 총 건수를 띄우면, 무거운 쪽을 매번 다시 부르는 셈이 돼요. 그래서 규모가 커진 서비스는 총 건수를 아예 안 보여 주거나, 하루 한 번 세어 둔 값을 보여 주거나, 다음 쪽이 있는지만 표시하는 쪽으로 가요.
정렬 기준에 승부 가리기가 하나 더 필요해요 · 만든 시각만으로 정렬하면, 같은 초에 들어온 주문 두 건의 순서가 부를 때마다 달라질 수 있어요. 순서가 흔들리면 끊어 오는 지점도 흔들려서 누락과 중복이 생겨요. 그래서 시각이 같을 때 무엇으로 앞뒤를 가릴지, 주문번호처럼 겹치지 않는 값을 하나 더 정해 둬요. 개발자가 "정렬을 유일하게 만들어야 한다"고 말하는 게 이 얘기예요.
이것만 기억하세요
- ·목록은 한 번에 다 부르지 않고 20건씩 끊어 불러요. 기록은 그대로 다 남아요
- ·읽고 보내는 양이 줄면 화면 속도만 아니라 서버 요금도 같이 줄어요
- ·정렬을 흔들리지 않게 고정해야 중복과 누락이 사라져요
- ·더보기 버튼 + 마지막으로 본 것 기준이 가장 사고가 적은 기본값이에요
- ·1년 뒤에도 줄 수가 비슷할 목록은 그냥 두세요. 안 하는 게 맞는 때도 있어요