PHP css파일과 js 파일 뒤에 자동으로 최종수정날짜 붙이기

PHP css파일과 js 파일 뒤에 자동으로 최종수정날짜 붙이기

 

CSS파일과 JS 파일 (그리고 이미지 파일)의 경우 캐시가 적용되기 때문에

개발단계에서 수정할경우 이전에 캐시받아둔 파일때문에 변경이 적용되지 않는경우가 있다.

이럴때 쓰는 꼼수로

아래 소스처럼 패러미터를 붙여 다른파일로 인식하게 해서 다시 읽어들이도록 하는 방법인데

<link rel="stylesheet" href="style.css?20160824" />

이를 PHP를 이용하여 자동으로 해당파일이 수정된 마지막날짜를 붙이도록 하는 소스를 짜보았다.

 

PHP 함수

// 주소 뒤에 자동으로 최종 수정일자를 붙여주는 소스
function get_url( $url ) {
    // URL이 비어있으면 리턴
    if(empty($url)) return $url;

    // URL 베이스경로를 가져온다.
    $base_URL = ($_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
    $base_URL .= ($_SERVER['SERVER_PORT'] != '80') ? $_SERVER['HTTP_HOST'].':'.$_SERVER['SERVER_PORT'] : $_SERVER['HTTP_HOST'];

    // 해당 URL이 베이스경로를 포함하고 있거나, 처음 시작이 / 이면서 // 이 아닐때 실행한다.
    if( strpos($url, $base_URL) !== FALSE OR ( substr($url,0,1) == '/' && substr($url,1,1) != '/' )
    {
        // 해당 파일이 실제로 존재할때만
        $absolute_url = $_SERVER['DOCUMENT_ROOT'] . str_replace($base_URL, "", $url);
        if( file_exist($_SERVER['DOCUMENT_ROOT'] . str_replace($base_URL, "", $url)) )
        {
             $url .= "?ver=".filemtime( $absolute_url ); 
        }
    }
    
    return $url;
}

 

실제 적용

<link rel="stylesheet" href="<?=get_url("/assets/css/style.css")?>">

 

해당 URL이 기본URL을 포함하고 있거나, 첫 시작이 / 이면서 //이 아닌 경우에 파일이 존재하는지 여부를 체크해서

최종 수정시간을 Unix Timestamp 형식으로 가져와서 파일이름뒤에 패러미터로 붙여주는 형식입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.