오늘은 대한입니다.
sun's longitude:300 16 2.70 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/delete.php:소스보기  
자유 게시판(광고사절)
[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
 ★ 글 지우기 항목입니다. 한번 더 생각하시고 결정하십시오.!!!
제목 476 번 글의 답장글 : Re: 감사합니다. ^^
 이름  산이 [홈]http://linuxchannel.net/

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

>안녕하세요..항상 도움 많이 받고 있습니다.
>항상 여기 저기서 훌륭한 소스나 팁을 많이 접하곤 하는데,
>건성으로 넘겨서 지나칠때도 있는데,
>
>전에도 봤는데, 산이님의 무단링크 방지에 관한글 정말 감동입니다.
>
>솔직히 아파치 설치만 하고, 그냥 기본적인것만 설정하고 지나치곤 했는데,
>
>이미지에 관한 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=%B9%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); 앞에

이렇게 함수를 호출하도록 하면 됩니다.
2003년 08월 29일 12:14:48 금(오후)  from 61.254.75.40
0
암호: 공용 보안 SSL 서버가 준비되기 전까지는 off 합니다

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

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