사이트 내 전체검색
[html] 최근 게시물보기 속도 빠르게 만들기
로빈아빠
https://cmd.kr/javascript/440 URL이 복사되었습니다.

본문

최근 게시판 속도 빠르게 하는 방법입니다.


홈페이지에 제로보드 게시판을 이용하여 php 프로그램을 많이 하십니다.
특히 게시물이 많아질 수록 최근 게시물을 로드하는데 시간이 오래 걸림을 많이 느끼시게 될 것입니다.
그 문제를 해결하기 위해 여러가지로 알아 보았더니 원인은 바로 select 문에서 사용하는 order by 에 있었습니다.

예) select * from zetyx_board_free where is_secret=0 and father=0 order by no desc limit 10

order by 에 의해서 게시물이 정렬하는데 걸리는 시간은 n^2 (n 의 제곱) 에 비례합니다.

즉, 게시물이 10 개일 경우 100 에 해당하는 시간이 걸린다면, 게시물이 1000개인 경우 1,000,000 에 해당하는 시간이 걸린다는 것이죠.

실제로 최근 게시물 번호 ( no 필드) 가 4000 번인 게시물의 최근 리스트를 구해오는데 10초넘게 걸린 적도 있었습니다. (한번 구한 다음에는 DB 에 캐시가 저장되어 빠르게 구하지만...)

이런 문제를 해결하기 위해서 가장 최근의 게시물 몇개를 가져와서 그 것에 대해서 order by 를 적용하는 방법으로 속도를 향상 시킬 수 있습니다.

아래의 내용을 적용한 뒤에는 엄청난 효과를 보았습니다. 거의 누르자마자 화면이 뜰 정도의 속도 향상을 가져왔습니다.

제로보드 게시판을 사용하신다면 꼭 적용하셔서 홈페이지 처리속도도 향상시키시고, 서버 부하도 줄여 줍시다.

--------------------------------------------------------------------

outlogin.php 의 print_bbs 함수에 파란 색으로 표시된 부분을 삽입하시면 됩니다.


function print_bbs(...)

...

if($setup[use_alllist]) $target = "zboard.php?id=".$id;
else $target = "view.php?id=".$id;

$result = mysql_query("select * from $t_board"."_$id where is_secret=0 and father=0 order by no desc limit $num", $connect) or die(mysql_error());

----------------------------------------------------------------------

function print_bbs(...)

...

if($setup[use_alllist]) $target = "zboard.php?id=".$id;
else $target = "view.php?id=".$id;

// speed up by hankawi
$tmp = mysql_fetch_array(mysql_query("select max(no) from $t_board"."_$id"));
$max_no = $tmp[0];
if ($max_no > 500) { // 게시물 개수가 500개 이상일때만
$mylimit = $max_no - 100; // 최종 100개를 대상으로
$speedup = "no>$mylimit and";
} else {
$speedup = "";
}

$result = mysql_query("select * from $t_board"."_$id where ".$speedup." is_secret=0 and father=0 order by no desc limit $num", $connect) or die(mysql_error());

댓글목록

등록된 댓글이 없습니다.

831 (9/17P)

Search

Copyright © Cmd 명령어 3.144.31.17