일반 게시판 새글 작성 후, 메인 페이지의 최신글 목록에 즉시 반영되지 않는 문제
페이지 정보
작성자 최고관리자 댓글 0건 조회 7회 작성일 26-06-24 18:44본문
■ 증상
메인 페이지에서 latest() 함수를 이용하여 최신 게시물을 출력하고 있었으나, 게시판에 새 글을 작성한 후에도 메인 페이지의 최신글 목록에 즉시 반영되지 않는 문제가 발생하였습니다.
또한 latest() 함수의 출력 개수(rows) 값을 변경하면 일부 설정에서는 최신글이 정상적으로 표시되고, 다른 설정에서는 표시되지 않는 현상이 발생하였습니다.
예)
latest(..., 6, 30) : 정상 출력
latest(..., 10, 40) : 최신글 미반영
latest(..., 12, 30) : 정상 출력
■ 원인
latest.lib.php 파일의 캐시 처리 로직에서 cache_time 값과 관계없이 기존 캐시를 먼저 읽도록 구현되어 있었습니다.
기존 코드
if (G5_USE_CACHE) {
$caches = g5_get_cache($cache_file_name);
}
이로 인해 latest(..., 10, 40, 0) 과 같이 cache_time을 0으로 지정하더라도 기존 캐시 파일이 존재하면 해당 캐시를 계속 사용하게 되었습니다.
따라서 게시판에 새 글을 작성해도 최신 데이터가 아닌 이전 캐시 데이터가 출력되었으며, rows 또는 subject_len 값을 변경할 경우 캐시 파일명이 달라져 새로운 캐시가 생성되면서 정상적으로 표시되는 현상이 발생하였습니다.
■ 해결 방법
latest.lib.php 파일의 캐시 처리 조건을 수정하여 cache_time 값이 0인 경우에는 캐시를 사용하지 않도록 변경하였습니다.
수정 전
if (G5_USE_CACHE) {
수정 후
if (G5_USE_CACHE && $cache_time > 0) {
위 조건을 캐시 읽기 부분과 캐시 저장 부분 모두에 적용하였습니다.
또한 기존에 생성되어 있던 캐시 파일을 삭제한 후 테스트를 진행하였으며, 이후 게시판에 새 글을 작성하면 메인 페이지 최신글 영역에 즉시 반영되는 것을 확인하였습니다.
■ 결과
게시글 작성 후 최신글 즉시 반영
출력 개수(rows) 변경 여부와 관계없이 정상 동작
불필요한 캐시 사용 방지
최신글 영역의 실시간 데이터 표시 정상화
댓글목록
등록된 댓글이 없습니다.