디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

디씨 갱신이 잘 안 되는 이유 분석과 대응 방안 제시

피로토스갤로그로 이동합니다. 2009.08.18 00:31:44
조회 129 추천 0 댓글 7


일단 캐시 문제다.

실제 서버 DB에 존재하는 데이터가 클라이언트로 순수하게 전송되지 않고 과거의 스냅샷이 보여진다.

캐시는 어디어디에 존재하는지 살펴봄으로써 해결 방법을 찾을 수 있다.

일단 웹 브라우저 캐시가 존재한다. 같은 URL에 대한 리퀘스트에 대해 클라이언트 단에서 이전에 기록된 결과를 리턴하는 방식이다.

이 캐시는 사용자가 끌 수 있다.

IE를 예로 들어보면 도구|인터넷 옵션|검색기록|설정 에서 [저장된 페이지의 새 버전 확인] 옵션을 [페이지를 열 때 마다]로 설정하면 된다.

웹 개발자들이 보통 이 설정으로 세팅해 놓고 사용하는 경우가 많다.

다음으로 추정해 볼 수 있는 캐시는 서버 캐시이다.

똑 같은 리퀘스트가 올 때 이전에 저장해 놓은 스냅샷을 전송하는 것이다.

이렇게 하면 DB서버에 대한 부담을 크게 줄일 수 있고, 스크립트에 대한 파싱을 줄일 수 있으므로 CPU에 대한 부담도 줄일 수 있다.

이 방식은 내부적으로 URL을 키로 한 해시맵으로 구현하는 것이 일반적일 것으로 추측된다.

따라서 이 방식은 해시키를 살짝 바꾸어 주면 캐시 히트를 피할 수 있다.

Ajax에서 많이 쓰는 해결방법을 응용하면 쉽게 해결된다.

예를 들어 우리가 L을 눌러서 새글을 확인한다고 할 때 URL은 [https://gall.dcinside.com/list.php?id=programming&keyword=&k_type=0100&search_pos=&page=1] 가 된다.

서버 캐시를 활성화 시켜 놓았다면 항상 같은 리퀘스트에 대해 캐시 히트가 될 것이다.

URL이라는 것은 ? 뒤에 붙는 정보들이 Form 데이터에 대한 전송이다.

Form 데이터는 HTTP 프로토콜상에서 느슨한 체크를 한다. 다르게 얘기하면 ? 뒤에 붙은 폼 데이터가 실재로 존재해도 되고 안 해도 된다는 것이다.

서버가 필요한 항목만 파싱해서 취사선택하기 때문에, 서버의 폼과 매칭되지 않는 쓰레기 변수들이 있어도 오류를 발생시키지 않는다.

따라서 저 URL뒤에 불필요한 항목을 붙여 보자.

[https://gall.dcinside.com/list.php?id=programming&keyword=&k_type=0100&search_pos=&page=1]가 딱 필요한 정보로 구성된 정상적인 URL이다.
[https://gall.dcinside.com/list.php?id=programming&keyword=&k_type=0100&search_pos=&page=1&garbage=12345] 라고 URL을 변형하면

서버는 이 URL을 정상적인 URL로서 처리해 줄 것이다. 뒤에 붙인 garbage=12345 라는 폼 데이터는 서버가 처리하지 않기 때문에 오류를 발생시키지 않는다.

하지만 캐시 히트는 피할 수 있다.

왜냐하면 URL을 검증하지 않고 전체 URL을 해시키로 쓰기 때문에 두 URL은 명확하게 다른 해시키가 되기 때문이다.

살짝 또 바꿔보자. garbage=12345 대신 garbage=12346을 붙여서 URL을 조합하면 역시 두 URL은 완전히 다른 놈이 된다.

따라서 서버의 캐시 히트를 피해갈 수 있다.

마지막으로 존재할 수 있는 캐시는 프락시 서버다.

프락시는 클라이언트와 서버 사이에 위치하면서, 클라이언트의 요청에 대해 눈치껏 파악해서 자신이 갖고 있는 캐시를 리턴시키는 방식으로 동작한다.

이 방식을 통해 프락시는 내부의 여러 유저의 캐시를 공유하는 역할을 해 준다.

자 그렇다면 프락시 서버는 어떤 키값으로 캐시를 검색할까?

웹서버와 마찬가지로 전체 URL을 해시키로 사용한다.

따라서 URL에 쓰레기를 붙이는 방식으로 프락시의 캐싱을 피해갈 수 있다.

자 이제 답은 명확하다. URL에 쓰레기 붙이기가 답이다.

답을 알았으므로 편하게 이 방식을 쓸 수 있도록 프로그램을 개발 해 보자.

URL의 변조는 철저히 클라이언트가 해야 하는 몫이다.

클라이언트에서 사용자는 URL 변조를 위해 불편함을 느껴서는 안 된다.

그리고 클라이언트 어플리케이션은 웹 브라우저다.

몇 가지 방법을 생각해 볼 수 있다.

첫 번째 안은 웹브라우저를 직접 제작하는 것이다.

URL을 네트웍에 전송할 때 https://gall.dcinside.com/ 이라고 시작한다면 문자열 비교 또는 정규식으로 간단히 비교하여 뒤에 쓰레기를 붙이면 된다.

이 방안의 단점은 웹브라우저를 직접 개발해야 한다는 부담과, 신기술을 따라가야 한다는 부담. 그리고 근본적으로 다른 유저들이 과연 이 브라우저를 사용할 것인가 하는 문제가 대두된다.

IE 컨트롤을 사용하여 한 시간 정도면 이 기능을 하는 웹 브라우저를 개발할 수 있다. 환경 설정과 플러그인도 IE와 공유하므로 훌륭한 대안이 될 수 있으므로 개발부담은 Zero로 가깝게 줄어들 수 있다.

그렇지만 다른 유저들이 사용할 것인가에 대한 고민은 해결이 되지 않는다. 웹마 같은 대중적인 브라우저로 성장한다면 다른 유저들도 사용하겠지.

하지만 웹마 수준의 브라우저는 개발 부담이 있다. 따라서 또 다시 같은 고민을 하게 되는 재귀논리모순에 빠지게 된다.

두 번째 안을 보자.

플러그인을 만드는 것이다. 불여우 플러그인 SDK를 이용하여 만들고, IE도 지원하려면 ActiveX로 구현하면 된다.

오픈 아키텍쳐(플러그인을 지원하는)구조의  웹 브라우저는 필수적으로 URL 가로채기를 지원한다.

왜냐하면 그 기능이 필수적이기 때문이다.

URL을 중간에 가로채서 어떤 동작을 할 지 판단해야 하는건 기본중의 기본 기능일 수 밖에 없다.

URL이라는게 한 페이지에서 한 번만 발생한다고 생각하는가?

HTTP는 너무나도 단순한 프로토콜이기 때문에 어떤 페이지를 요청해서 받은 HTML문서에 이미지가 두 개, 플래시가 하나 포함되어 있다면, 이미지 요청을 위해 두 번의 URL리퀘스트와 플래시를 다운받기 위한 한 번의 리퀘스트를 날리게 되어 있다.

플래시 플러그인을 활성화 시키려면 마지막의 플래시 파일 요청 URL을 가로채야만 한다.

그게 아니면 뭔 수로 쉽게 플래시와 플러그인을 연결시키겠는가?

URL을 가로챌 수 있으면 URL을 변조하여 전송하는 것도 가능하다.

그게 아키텍쳐에서 제공하는 기능이던 약간의 해킹을 해야 하는 것이던간에 분명히 변조하여 전송할 수 있다.

내가 아는 바로는 IE는 분명히 그 기능을 제공한다. 불여우나 기타 브라우저의 제공 여부는 확실치 않지만, 상식적으로 판단할 때 그 기능을 제공하지 않는 경우는 별로 없을 거 같다.

이 방식의 장단점도 짚어보자.

장점은 첫 번째 안의 단점이 사라진다는 것이다. 브라우저 개발의 부담은 없다. 그리고 많은 사용자들이 즐겁게 사용해 줄 것이다.

단점은 뭘까? 여러 브라우저를 지원해야 한다. 그런데 브라우저마다 플러그인 인터페이스가 다 다르다. 따라서 코드 재활용이 제한적일 수 밖에 없다. 많은 버전을 만들어야 한다는 부담이 있다.

하지만 여러 안 중에 가장 적절한 안이라고 본다.

마지막 안은 로우레벨의 구현이 필요한 안이다. 로우레벨인 만큼 응용레벨의 구현이 어찌 되었던간에 동일한 기능을 구현 할 수 있는 장점이 있는 안이다.

바로 URL이 날라가는 도중에 네트웍을 타기 전에 바꿔치기를 하는 것이다.

TCP/IP 드라이버를 변조하여 구현할 수 있다. 드라이버를 건드리지 않고도 구현이 가능하다. 윈도 OS인 경우 알다시피 후킹을 사용할 수 있을 것이다.

내가 아는 범위에서 네트웍 리퀘스트에 대해서도 후킹이 가능한지는 확실치 않다. 하지만 TCP/IP 패킷을 보여주는 스파이 프로그램들이 존재하는 걸로 봐서, 그리고 그 스파이들이 드라이버를 건드리지 않는 거 같기 때문에 무언가 방법은 분명히 존재한다.

존재 하지 않는다면 드라이버를 건드리면 되고, 아니면 로컬 프락시를 만들어도 된다.

장점은 앞서 말한 대로다. 모든 브라우저를 동시에 지원하게 된다.

가장 큰 단점은 플러그인이 아니라는 점이다.

드라이버를 건드리는 프로그램은 로우레벨의 문제를 발생시킬 소지가 있다.

특히 네트웍이 먹통이 되었을 때, 그 문제를 복구하기가 참 어렵다. 인터넷 검색이라도 되어야 복구할 방법을 찾을 것이고, 원본 드라이버를 새로 다운로드를 받을 수 있을게 아닌가?

이런 이유로 사용자들은 로우레벨까지 건드리는 소프트웨어를 설치하기 꺼려한다.

그래서 내 결론은 두 번째 안이 가장 좋다는 것이다.

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
AD 휴대폰 액세서리 SALE 운영자 25/07/15 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45586 65
2872705 깃헙같은거 의미 없응 ㅇㅇ(175.197) 23:14 12 0
2872704 원래 노트북 용량에 부족함을 느껴본 적이 없었는데 ㅇㅇ갤로그로 이동합니다. 23:02 11 0
2872702 [장하준 런던대교수] “주주가치 극대화? 보잉과 GM의 몰락을 보라” 발명도둑잡기갤로그로 이동합니다. 22:48 16 0
2872700 좆됨 자꾸 면접에 내보내려는거같은디 프갤러(106.102) 22:35 22 0
2872699 흐음.. 딱케이(58.225) 22:11 19 0
2872698 나님 내일 신상 털리면 어카징..? [2] ♥냥덩이의고독♥갤로그로 이동합니다. 22:09 36 0
2872696 블랙박스인 군대, 정보기관의 구조적 비리, 무인기 외환죄 발명도둑잡기갤로그로 이동합니다. 21:51 12 0
2872694 개발자 아닌 사람이 서류 검토하는거 흔함? [2] 프갤러(211.234) 21:45 48 0
2872691 AI 슈퍼스타 연봉 1300억…실리콘밸리의 '두뇌' 전쟁 발명도둑잡기갤로그로 이동합니다. 21:41 14 0
2872690 허이호이 딱쓰(58.225) 21:39 22 0
2872689 프랑스서 ‘41년 구금’ 레바논 공산주의 활동가 석방 발명도둑잡기갤로그로 이동합니다. 21:28 17 0
2872687 아흐 [1] 루도그담등(118.235) 21:23 32 0
2872686 김문수, 여학생 팔뚝을 주물러..."성추행 아니냐" 논란 발명도둑잡기갤로그로 이동합니다. 21:18 11 0
2872685 나님 내일 출현 장소⭐ 냥로롱을 찾아보세양❤ [1] ♥냥덩이의고독♥갤로그로 이동합니다. 21:14 34 0
2872684 히힛 딱콩(58.225) 21:13 24 0
2872683 21년 만에 광주 지하철 대란…역대급 폭우·2호선 공사 '주범 지목' 발명도둑잡기갤로그로 이동합니다. 21:09 13 0
2872682 글고보니 애널 나님 야하면서 무서운꿈 꿍.. ♥냥덩이의고독♥갤로그로 이동합니다. 21:04 22 0
2872681 조선 왕의 하루 시간표 발명도둑잡기갤로그로 이동합니다. 21:04 20 0
2872680 나님 이슬만 먹구 살랭 [2] ♥냥덩이의고독♥갤로그로 이동합니다. 21:00 31 0
2872678 나치 스파이였고 유대인 혐오하던 샤넬 발명도둑잡기갤로그로 이동합니다. 20:59 12 0
2872677 막코더행님 좆본 생활은 할만 하십니까 ㅆㅇㅆ(124.216) 20:57 18 0
2872675 나님 사이다 프로젝트 인중❤+ ♥냥덩이의고독♥갤로그로 이동합니다. 20:53 22 0
2872674 하버드 교수가 풀어본 한국 수능영어 발명도둑잡기갤로그로 이동합니다. 20:53 16 0
2872673 휴.. 다 끝냤당 이제 주무실 중비 ♥냥덩이의고독♥갤로그로 이동합니다. 20:53 18 0
2872671 나님 눈 앞에 번개 떨어지는거 본적있웅 ♥냥덩이의고독♥갤로그로 이동합니다. 20:50 21 0
2872669 [더 러닝 맨] 1차 예고편 발명도둑잡기갤로그로 이동합니다. 20:46 14 0
2872668 프갤보면 ㄹㅇ 국제사회감각 떨어지는게 눈에 보임 ♥냥덩이의고독♥갤로그로 이동합니다. 20:40 32 0
2872667 [전지적 독자 시점] 메인 예고편 발명도둑잡기갤로그로 이동합니다. 20:40 39 0
2872666 님덜 34살 고졸 자바 국비 왜 취업 안되나요 [10] 프갤러(118.235) 20:38 96 2
2872664 나한텐 지능 낮은 새끼가 붙는 마법이 있나 [4] ㅆㅇㅆ(124.216) 20:33 54 0
2872663 주름 없눈 폴더불 탐 나넹 ♥냥덩이의고독♥갤로그로 이동합니다. 20:33 17 0
2872662 요즘 비 좀 내리니까 모기새끼들 기어나오넹 ♥냥덩이의고독♥갤로그로 이동합니다. 20:22 20 0
2872661 알고있다는 착각 ♥냥덩이의고독♥갤로그로 이동합니다. 20:19 25 0
2872660 병신이냐 책을 정보로만 보냐 책은 맥락을 모아놔서 보는거야 [10] ㅆㅇㅆ(124.216) 20:18 85 0
2872659 진짜 내 전공버리고 다른거 찾아야하나? [1] 백고기(119.192) 20:18 53 0
2872658 책읽는 사람이 가장 병신임 [3] 프갤러(121.139) 20:16 59 0
2872657 흠.. ♥냥덩이의고독♥갤로그로 이동합니다. 20:16 18 0
2872656 흠.. 내년 진행사항이 어케될지 감이 잘 안 잡히네 ♥냥덩이의고독♥갤로그로 이동합니다. 20:13 19 0
2872655 오늘도 프로그래밍 책 한권 다 읽었다 [2] ㅆㅇㅆ(124.216) 20:13 44 0
2872654 대기업 si 별거 없네... ㅇㅇ(223.38) 20:10 30 0
2872653 악마 편이었다가 하나님의 편으로 돌아선 캐릭터 발명도둑잡기갤로그로 이동합니다. 20:09 17 0
2872652 [대한민국] 댓글 알바생이 간첩인지 아닌지 구분하는 방법 프갤러(121.172) 20:07 27 1
2872651 이 또한 2찢명의 은혜겠지요⭐ ♥냥덩이의고독♥갤로그로 이동합니다. 20:07 18 0
2872650 나님 체력 딸류.. ♥냥덩이의고독♥갤로그로 이동합니다. 20:07 15 0
2872649 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥냥덩이의고독♥갤로그로 이동합니다. 20:05 14 0
2872648 이번 달 카드값 215만원. 태어나서 최대 소비 [1] 발명도둑잡기갤로그로 이동합니다. 19:57 24 0
2872647 수원새끼들은 진짜 우물안 개구리인듯 ㅋㅋㅋㅋㅋ [2] 프갤러(221.142) 19:55 31 0
2872646 QA 엔지니어 << 개발자 말고 그냥 직업적인 관점으로 [4] 프갤러(221.163) 19:55 45 0
2872645 ❤✨☀⭐⚡☘♥+나님 시작합니당♥+☘⚡⭐☀✨❤ ♥냥덩이의고독♥갤로그로 이동합니다. 19:50 17 0
뉴스 넷플릭스 내달 '나는 신이다' 후속편 공개 디시트렌드 07.17
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2