htaccess를 이용한 이미지 자동캐시

2011. 7. 9. 07:39컴퓨터_computer/PHP, HTML

이미지를 캐쉬할 때 파일이 없으면 이미지를 받아와서 저장하고, 파일이 있으면 그냥 이미지를 보여주는 예제입니다.
관리상의 문제 때문에 많은 양의 이미지를 DB에 저장하면서도, 자주 보는 이미지에 대해서는 파일 시스템의 캐쉬기능을 이용하고 싶은 분들에게 유용한 팁입니다.

.htaccess 파일

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f
RewriteRule ^(.*) ../../ext/iconview.php?bid=$1

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f
RewriteRule ^(.*) $1 [T=image]


iconview.php 파일

<?
 
require "../bin/common.php";
require "../bin/database/sql.php";
 
$BID = $_GET['bid'];
 
APTDBON();
$IMAGE = APTVAR('cache','IMAGE',array('BID'=>$BID));
APTDBOFF();
 
if($IMAGE=='') {
    require "../bin/transfer/sock.php";
    $IMAGE = sock("site");
    $IMAGE = $IMAGE['content'];
}
 
$fp = fopen('../cache/icon/'.$BID,"w");
fwrite($fp,$IMAGE);
fclose($fp);
 
header("location: ".$BID);
 
?>



이미지 캐쉬가 끝나면, header("location ".이미지명)을 이용해서 리다이렉션합니다. 다음에 똑같은 주소로 들어오면, php파일을 거치지 않고 바로 캐쉬된 이미지가 전송되게 됩니다.