rss.php 에서 갱신여부 요청시 응답해주기 > 자유게시판

자유게시판

rss.php 에서 갱신여부 요청시 응답해주기 정보

정보 rss.php 에서 갱신여부 요청시 응답해주기

본문

If-Modified-Since (혹은 If-Unmodified-Since) 나 ETag를 이용해서 rss의 갱신여부를 문의하는 rss리더기를 위해 우선 If-Modified-Since 를 지원하는 방법입니다.
ETag를 지원하려면 디스크에 고유값을 생성해서 저장하고 같이 비교해야겠네요
(동적으로 rss문서를 생성하는 구조상 db나 디스크에 고유값을 저장해야되기에 이부분은 개인판단 및 응용으로 돌립니다..)

약간이나마 네트워크 부하 줄이기에 도움이 되길 바랍니다..


rss.php 의 28라인 부분에 추가합니다.

// 비회원 읽기가 가능한 게시판만 RSS 지원
if (($row[bo_read_level] >= 2) || ($row[ bo_use_search] != '1')) {
    echo "RSS를 지원하지 않는 게시판입니다."; //<br> 읽기권한:{$row[bo_read_level]} 검색여부:{$row[ bo_use_search]}";
    exit;
}

//추가부분
//최신글 테이블($g4[board_new_table])에서  해당 게시판의 최신글 게시 시간을 읽어온다.
//bo_table 필드에 인덱스 걸어두면 좋겠죠.
$sql = "select max(bn_datetime) as maxtime from  $g4[board_new_table] where bo_table='$bo_table' ";
$row = sql_fetch($sql);
$modified_time = strtotime($row['maxtime']);

// If-Modified-Since 처리
if ($_SERVER['HTTP_IF_MODIFIED_SINCE']) {
      $if_modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
      if ($if_modified_since >= $modified_time) {
            header("HTTP/1.1 304 Not Modified");
            header("Last-Modified: " . date('r', $modified_time));
            exit();
      }
}

// If-Unmodified-Since 처리
if ($_SERVER['HTTP_IF_UNMODIFIED_SINCE']) {
      $if_modified_since = strtotime($_SERVER['HTTP_IF_UNMODIFIED_SINCE']);
      if ($if_modified_since < $modified_time) {
            header("HTTP/1.1 412 Precondition Failed"); // 412 Precondition Failed
            header("Last-Modified: " . date('r', $modified_time));
            exit();
      }
}
//추가 부분 끝
추천
0

댓글 2개

전체 195,264 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

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