asset 버전 관리하기

Submitted by river - 등록 5 years ago - 수정 5 years ago

cssjavascript등은 페이지 로드 속도를 개선하기 위해서 보통 웹서버 설정시 만료 날짜를 길게 잡는다.

참고 : Add a far future Expires header to your components.

css, javascript 파일이 수정됐을 때는, 브라우저가 캐시된 파일을 사용하지 않고 새로 파일을 다운받도록 강제해야 한다. 이 때 사용할 수 있는 방법은 파일명을 변경하거나 파일명 뒤에 쿼리스트링을 추가하는 방법이다.

<filename>.<buster>.<extension>

<filename>.<extension>?<buster>

cached_asset은 이를 도와주는 함수이다.

if ( ! function_exists('cached_asset'))
{
    function cached_asset($path, $bustQuery = false)
    {
        // Get the full path to the asset.
        $realPath = public_path($path);

        if ( ! file_exists($realPath)) {
            throw new LogicException("File not found at [{$realPath}]");
        }

        // Get the last updated timestamp of the file.
        $timestamp = filemtime($realPath);

        if ( ! $bustQuery) {
            // Get the extension of the file.
            $extension = pathinfo($realPath, PATHINFO_EXTENSION);

            // Strip the extension off of the path.
            $stripped = substr($path, 0, -(strlen($extension) + 1));

            // Put the timestamp between the filename and the extension.
            $path = implode('.', array($stripped, $timestamp, $extension));
        } else {
            // Append the timestamp to the path as a query string.
            $path  .= '?' . $timestamp;
        }

        return asset($path);
    }
}

출처 : Easier caching with cached_asset()

comments powered by Disqus