오늘은 대한입니다.
sun's longitude:300 11 11.76 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  
자유 게시판(광고사절)
[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
216 번 글의 답장글: Re: 감사합니다. ^^
글쓴이: 산이 [홈페이지] 글쓴날: 2003년 08월 29일 12:14:48 금(오후) 조회: 1994

[최경민]님이 남기신 글:

>안녕하세요..항상
 도움 많이 받고 있습니다.
>항상 여기 저기서 훌륭한 소스나 팁을 많이 접하곤
하는데,
>건성으로 넘겨서 지나칠때도 있는데,
>
>전에도 봤는데, 산이님의 무단링크 방지에 관한글 정말
감동입니다.
>
>솔직히 아파치 설치만 하고, 그냥 기본적인것만 설정하고
지나치곤 했는데,
>
>이미지에 관한 action 지시자를 이용하는 방법 정말
간단하면서도 완전하네요.^^;;

>
>이런 좋은 팁들 정말 감사하고, 홈페이지에 이렇게 유익한
팁들을 많이 올려주시면 정말 감사하겠습니다.

>솔직히 욕심 같아선 강좌 같은 걸 여시면 정말 열심히 할것
같은데 ^^
>
>그런데 자세히 보니 알파 문서에 있네요 ㅡㅡ;;
>아무튼 감사감사......
>
>산이님 짱~
>
>아래 링크의 산이님 코멘트:
>
>http://www.phpschool.com/bbs2/inc_view.html?id=9300&code=tnt2&start=
0&mode=search&field=title&search_name=&operator=and&period=all&category_id=&s_que=%B
9%AB%B4%DC%B8%B5%C5%A9 

========================================

... 앗...

그때 잠깐 짠 스크립트입니다.

제가 찾기 힘들어서 알파문서에 올려놓았습니다.


그런데 약간 문제가 있습니다.
즉 304 status code 문제인데,

위의 스크립트는 항상 200 status 코드를
전송하기 때문에 매번 항상 같은 이미지를 전송하는
불합리성이 있습니다.

즉
이미지는 거의 바뀌지 않는 정적인 파일이지만 PHP 자체
속성이 항상 200 status code 이므로 이미지를 전송하기 전에
적절한 헤더를 날려줘야 합니다.

해결책:

## static or vitural file caching
##
function header_filecache($days=1, $file='')
{
  global $_SERVER; // for PHP/4.0.x

  if($file && !@file_exists($file)) return FALSE;

  $term = (int)$days; // alway $days > 0
  $req = $_SERVER['HTTP_IF_MODIFIED_SINCE']; // request modified datetime

  $time = array();
  $time['expire'] = $term * 86400; // expire term, after cached
  $time['client'] = $term * 300; // client 'think time', or keepalive

  if($file)
  {
        $time['cur'] = $time['chk'] = @filemtime($file);
  } else
  {
        $time['cur'] = time(); // virual file mtime
        $time['chk'] = $time['cur'] - $time['expire'];
  }

  if($req && strtotime($req)>=$time['chk'])
  {
        header('HTTP/1.1 304 Not Modified');
        exit; // don't print any messages
  }

  header('Expires: '.gmdate('D, d M Y H:i:s T',$time['cur']+$time['expire']));
  header('Last-Modified: '.gmdate('D, d M Y H:i:s T',$time['cur'])); // GMT
  header('Cache-control: private, max-age='.$time['client'].',
pre-check='.$time['client']);

  return TRUE; // alway true
}


위의 함수를 등록하고,

readfile($img); 앞에


header_filecache(4,$img);
readfile($img); 앞에

이렇게 함수를 호출하도록 하면 됩니다.

 
이전글 : 감사합니다. ^^
다음글 : safe_wordwrap() 테스트  
 from 61.254.75.40
JS(Redhands)Board 0.4 +@

감사합니다. ^^ safe_wordwrap() 테스트
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2026. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds