본문 바로가기
개발/PHP

브라우저 캐시 설정

by GetLight 2012. 10. 18.




    $sFileName            = $_SERVER['SCRIPT_FILENAME'];
    $nFileSize            = filesize($sFileName);
    $nLastModifyTime    = filemtime($sFileName);
    $aApacheHeader = apache_request_headers();
    $bEnd = false;
    if(isset($aApacheHeader['If-Modified-Since'])) {
        //$ims = strtotime(preg_replace('/;.*$/', '', $aApacheHeader['If-Modified-Since']));
        //if($nLastModifyTime == $ims) {
        if(gmdate('D, d M Y H:i:s T', $nLastModifyTime) == $aApacheHeader['If-Modified-Since']) {
            header('HTTP/1.1 304');
            $bEnd = true;
        }
    }

    //echo 'console.log("'.gmdate('D, d M Y H:i:s T', time()).' : 현재");';
    //echo 'console.log("'.substr(gmdate('r'), 0, -5).' : 현재");';
    //echo 'console.log("'.gmdate('D, d M Y H:i:s T', $nLastModifyTime).' : 최종수정");';
    //echo 'console.log("'. $aApacheHeader['If-Modified-Since'].' : 헤더시간");';
    //echo 'console.log("'. gmdate('D, d M Y H:i:s T', time()+$nExpire).' : 만료시간");';

    //header('Date: '.substr(gmdate('r'), 0, -5).'GMT');
    //header('Expires: '.gmdate('D, d M Y H:i:s', time()+3600));
    header('Cache-Control: private, max-age=3600');
    header('Pragma: cache');
    //header('Last-Modified: '.substr(gmdate('r', $nLastModifyTime), 0, -5).'GMT');
    header('Last-Modified: '.gmdate('D, d M Y H:i:s T',$nLastModifyTime));
    header('ETag: '.dechex($nFileSize).'-'.dechex($nLastModifyTime));

    if($bEnd === true) exit;