웹 페이지 캐싱
CodeIgniter는 최대 성능을 얻을 수 있도록 페이지를 캐시할 수 있게 해줍니다.
CodeIgniter는 매우 빠르지만, 페이지에 표시하는 동적 정보의 양은 사용되는 서버 리소스, 메모리, 처리 사이클과 직접적으로 연관되며 이는 페이지 로딩 속도에 영향을 줍니다. 페이지를 캐싱하면 완전히 렌더링된 상태로 저장되므로 정적 웹 페이지에 훨씬 가까운 성능을 얻을 수 있습니다.
캐싱은 어떻게 동작하나요?
캐싱은 페이지별로 활성화할 수 있으며, 페이지가 새로고침되기 전까지 캐시를 유지할 시간을 설정할 수 있습니다.
참고
페이지별은 URI별을 의미합니다. v4.5.0부터는 요청의 HTTP 메서드도 함께 고려합니다. 즉, 같은 URI라도 HTTP 메서드가 다르면 별도로 캐시됩니다.
페이지가 처음 로드되면 현재 설정된 캐시 엔진을 사용해 해당 페이지가 캐시됩니다. 이후 페이지 로드에서는 캐시를 가져와 요청한 사용자의 브라우저로 전송합니다.
캐시가 만료되었으면 삭제 후 갱신되어 브라우저로 전송됩니다.
참고
Benchmark 태그는 캐시되지 않으므로 캐싱이 활성화된 상태에서도 페이지 로딩 속도를 계속 확인할 수 있습니다.
캐싱 설정
캐시 엔진 설정
웹 페이지 캐싱을 사용하기 전에 app/Config/Cache.php 를 수정하여 캐시 엔진을 설정해야 합니다. 자세한 내용은 캐시 설정 를 참고하세요.
$cacheQueryString 설정
Config\Cache::$cacheQueryString 으로 캐시 생성 시 쿼리 문자열 포함 여부를 설정할 수 있습니다.
유효한 옵션은 다음과 같습니다:
false: (기본값) 비활성화. 쿼리 문자열을 고려하지 않으므로 URI 경로가 같고 쿼리 문자열만 다른 요청에는 동일한 캐시가 반환됩니다.true: 활성화. 모든 쿼리 파라미터를 고려합니다. 이 경우 같은 페이지에 대해 많은 캐시가 반복해서 생성될 수 있으니 주의하세요.array: 활성화. 단, 지정한 쿼리 파라미터 목록만 고려합니다. 예:
['q', 'page'].
$cacheStatusCodes 설정
Added in version 4.7.0.
Config\Cache::$cacheStatusCodes 로 캐시를 허용할 HTTP 응답 상태 코드를 제어할 수 있습니다.
유효한 옵션은 다음과 같습니다:
[]: (기본값) 모든 HTTP 상태 코드를 캐시합니다. 하위 호환성은 유지되지만 임시 오류 페이지도 캐시될 수 있습니다.[200]: (권장) 성공 응답만 캐시합니다. 이렇게 하면 임시여야 하는 오류 페이지(404, 500 등)의 캐싱을 방지할 수 있습니다.상태 코드 배열: 특정 상태 코드만 캐시합니다. 예:
[200, 404]: 성공 응답과 Not Found 페이지를 캐시합니다.[200, 404, 410]: 성공 응답과 특정 오류 코드를 캐시합니다.[200, 201, 202, 203, 204]: 모든 2xx 성공 응답.
경고
빈 배열 [] 을 사용하면 임시 오류 페이지(404, 500 등)도 캐시될 수 있습니다. 운영 애플리케이션에서는 임시 오류를 캐시하지 않도록 [200] 으로 제한하는 것을 고려하세요. 예를 들어 404 페이지가 캐시되면 리소스가 생성된 뒤에도 캐시 만료 전까지 계속 남아 있게 됩니다.
참고
이 설정과 관계없이 DownloadResponse 및 RedirectResponse 인스턴스는 PageCache 필터에서 절대 캐시되지 않습니다.
캐싱 활성화
캐싱을 활성화하려면 컨트롤러 메서드 어디든 다음 태그를 넣으세요:
<?php
$this->cachePage($n);
여기서 $n은 페이지를 새로고침 사이에 캐시 상태로 유지할 초 수입니다.
위 태그는 메서드 내부 어디에 두어도 됩니다. 표시 순서의 영향을 받지 않으므로 가장 논리적인 위치에 두세요. 태그를 추가하면 페이지 캐싱이 시작됩니다.
중요
출력에 영향을 줄 수 있는 설정 옵션을 변경했다면 캐시를 수동으로 삭제해야 합니다.
캐시 삭제
더 이상 페이지를 캐시하고 싶지 않다면 캐싱 태그를 제거하세요. 그러면 만료 시 더 이상 갱신되지 않습니다.
참고
태그를 제거해도 캐시는 즉시 삭제되지 않습니다. 정상적으로 만료되어야 합니다.