티스토리 뷰

출처: http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=ajax&wr_id=435&page=1


ajax를 쓸때 POST와 GET이 내부적으로 문제 되는 점을 이야기 해 보겠습니다...
post와 get의 기본적인 차이점은 이야기 하지 않겠습니다.


ajax로 페이지 요청을 하는 경우,
보통 시간을 넘기게 됩니다. 이유는 캐싱되기 때문이죠.
파라메터의 차이 없이 request하면 기존 페이지와 동일하다고 보고 클라이언트 내에 있는 인터넷임시파일을 사용합니다.

그래서 인자를 항시 바꿔주기 위하여 인자중에 유닉스시간 같은것을 보내주면 매번 바꿔주는겁니다.


그런데 여기에서..get방식을 쓸 경우에 한가지 문제점이 있습니다.

request 받은 페이지가 인터넷임시파일에 파일을 저장할 때
파일명?get으로 받은 인자..
예 : ajax.php?uTime=1161781503765
이런식으로 파일명을 저장합니다.

즉..
파라메터가 계속 바꿔줘야 되는 ajax 페이지에서는
요청 페이지의 파라메터가 다르기 때문에 매 리프래쉬마다 인터넷임시폴더에 파일이 생성됩니다.


해결책은..
post 방식을 쓰면 됩니다.
(그러면 동일한 파일명이기 때문에 누적되지 않죠.)

네이버 실시간 검색 추천어처럼..
사용자의 이벤트에 반응하는 경우에는 get을 사용하여도 문제가 없으나,

실시간 채팅처럼 서버에 부담이 되더라도
매초마다 페이지를 업데이트 할 경우에는 post방식을 사용해야 하는 것입니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
이 내용이 다른곳에도 있는지는 모르겠네요..
홈페이지에 쓸 채팅 프로그램 짜다보니 이러한 문제점이 발생하여..
오래 켜 두면 클라이언트가 버벅이는 현상이 발생하여,
해결과정에 나온 내용을 정리해 올려 봅니다.

간단하게 페이지를 1초마다 리프래쉬 하는 소스를 올려 봅니다..
request.php페이지에는 14자리 시간(unix time)+텍스트를 반환합니다.
업데이트된 내용이 없을 경우 텍스트로 아무것도 반환하지 않습니다..
그러면 굳이 view의 내용을 변경해 줄 필요 없겠죠?? 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크