그누보드를 이용한 커뮤니티사이트에 따른 문제점과 해결방법 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

그누보드를 이용한 커뮤니티사이트에 따른 문제점과 해결방법 정보

그누보드를 이용한 커뮤니티사이트에 따른 문제점과 해결방법

본문

그누보드는 다양한 옵션들로 일반사용자들이 일반적인 사용과 커스트마이징하여 확장하기 좋은 시스템이다.
하지만 일반사용자를 위한 편의 위주의 로직으로 인하여 조금 커뮤니티 사이트가 커지면

현실적으로는 DB퍼포먼스가 zb4보다 떨어진다.

해당 문제점을 짚어보면 이렇다

1. get_list 함수의 문제점

   이 함수는 최신글의 latest함수와 게시판 글보기, 게시판 리스트에서 사용되어진다.

   문제점은 현실적으로 최신글과, 게시판 리스트에서 파일이미지 정보를 필요로 하지 않거나

   혹 필요하더라도 썸네일 형태로 필요하다는 점이다.

   하지만 get_list에는 기본적으로 적용되어져 잇다.

   최신글상에 실제 적용가능한 필드는, wr_id, wr_subject, ca_name, wr_content, wr_datetime, mb_id, wr_hit

   wr_comment 정도가 사용하는 정도라면 latest함수에서는 별도의

   get_list2함수를 사용하고 select * from이 아닌 SELECT wr_id, wr_subject, ca_name, wr_content,

   wr_datetime, mb_id, wr_hit, wr_comment FROM 형태로 사용되어져야 할것이다.


2. 확장을 염두해둔 wr_1 ~ wr_10 VARCHAR(255) 보드의 확장을 위해서는 참 편리한 필드이겠지만

   get_list 상에서 SELECT * FROM 형태로 읽어들이는 상태에서는 문제가 될수 밖에 없다고 여겨진다.

   어차피 기본 구조에서 저장을 하지 않고 혹 확장이 필요한 경우만 확장을 위해서

   write_update.skin.php를 include처리함으로 정말 확장 필드가 필요한 스킨에 대해서는

   기본 로직에서 wr_1 ~ wr_10까지 사용하게 하는걸 해제하고 write_update.skin.php 상에서 필드를 

   DB에 적재하게 하는이 나을듯 싶다.

3. 확장을 염두해둔 $g4[board_table] bo_1 ~ bo_10, bo_1_subj - bo_10_subj 
   현재 이 필드는 주로 겔러리 스킨에 썸네일 생성을 위한 이미지크기와 퀄리티 등에 주로 사용한다.

   post,get상에 bo_table값이 존재하게 되면 common.php상에서 
   무조건적으로     $board = sql_fetch(" select * from {$g4['board_table']} where bo_table = '$bo_table' ");를
   실행하게 된다 

   하지만 쿼리상 SELECT * FROM를 사용함으로써 DB포퍼먼스를 떨어트리게 된다.
   기능성 스킨에 대해서는 보드 설정보다는 스킨자체에 설정해주는편이 사이트 속도를 위해서 낫다.
  

4. 최신글과 게시판 막 접속시 속도해결방법

    최신글과 특별한 경우가 아닌(정렬방식을 다르게 햇을경우를 제외) 게시판을 검색없이 접속시 결국 

    가장 나중에 저장된 최신 게시물을 가져오게 된다.

   그렇타면 게시판 글수가 많타면 전체 게시물에 대하여 정렬을 한후에 그 안에서 limit가 이루어지게 된다.

   하지만 새글을 작성할시 $g4[board_table] 안에 bo_last_wr_id 필드값을 만들어서 저장하고

   최신글상태에서 쿼리상 and wr_id > (bo_last_wr_id - 100)를 추가해주게 되면

   가장 나중에 작성한 wr_id 에서 코멘트를 감안하여 100개가 적은수치보다 큰값에 대하여 WHERE 하고

   그 해당 자료에서 정렬하고 다시 그안에서 rows를 가져오면 속도 향상을 볼수 있다.

   게시판 리스트상에서는 page<2적고 검색과 카테고리값이 존재하지 않을시 동일한 방식으로

   쿼리를 생성하여 출력하면 속도 향상을 볼수 있다.
  
5. 검색어에 대한 문제

   보통 커뮤니티사이트에서 인기검색어를 많이 출력해주고 있다

   그누보드의 검색어 등록방식은 g4_popular에 검색시 검색 단어와 시간 그리고 아이피를 순차적으로 등록

   방식을 취하고 있다

   하지만 검색이 많이 이루어지는 사이트에서 상당기간 사이트를 운영하다보면 g4_popular전체 필드에 
 
   대하여 인기 검색어를 뽑아내게 된다면 DB에 많은 부하를 줄수 밖에 없다

   이 문제를 해결하기 위해서 각 문장에 대한 카운터값을 가지는 테이블을 별도로 구성하고

   해당하는 검색시 카운터필드와 검색어 필드에 동시 적재를하고 인기검색어 출력시

   검색어 카운터필드의 카운터만 정렬해서 출력하는 방식을 취해야한다.
 
추천
2

댓글 10개

감사합니다.
저는 초보라서 자세히는 모르지만
평소에 생각하고 있었던 부분들이라 공감이 많이 갑니다.
사용의 편리함도 필요하지만
팁으로 남겨두는 방법도 생각하고 있습니다.
php초보라서 잘 모르지만 넘 근본적인 문제들을 심도 깊게 리뷰한 듯 보여 공감합니다.
특히 속도문제에서 늘 불만이 있었는데 ...
그러나 아직 DB 양이 적어서 인지 zb4 보다는 부족하다는 느낌은 안들었습니다.
그누 고수님들의 끝 없는 정진을 기대하며 기탄 없는 의견에 박수를 보냅니다.  ^^
평소에 늘 안타까워하던 부분이 홈페이지 로딩이 오래 걸린다는 것이었는데,
크게 공감이 가는 부분입니다.
좋은 참고가 될 것 같습니다만, 적용해보기가 실력부족으로 좀 어렵군요.
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT