
캐시 및 성능
Cache pool, adapter, tag, 캐시 무효화, HTTP cache, ESI, Varnish 통합
1Symfony는 PSR-6 캐시 시스템을 구현하기 위해 어떤 인터페이스를 사용하나요?
Symfony는 PSR-6 캐시 시스템을 구현하기 위해 어떤 인터페이스를 사용하나요?
답변
Symfony는 CacheItemPoolInterface를 통해 PSR-6 표준을 구현합니다. 이 인터페이스는 캐시 항목을 관리하기 위한 getItem(), hasItem(), deleteItem(), save(), clear() 메서드를 정의합니다. Symfony의 Cache 컴포넌트는 이 인터페이스를 모두 구현하는 여러 adapter(Redis, Memcached, Filesystem 등)를 제공하여 다른 PSR-6 호환 PHP 라이브러리와의 상호 운용성을 보장합니다.
2개발 환경을 위해 Symfony에 기본으로 설정된 캐시 adapter는 무엇인가요?
개발 환경을 위해 Symfony에 기본으로 설정된 캐시 adapter는 무엇인가요?
답변
개발 환경에서 Symfony는 기본적으로 캐시를 메모리에 저장하는 ArrayAdapter를 사용합니다. 이 캐시는 요청 간에 유지되지 않으므로 코드를 수정할 때 오래된 캐시 문제를 방지할 수 있어 개발에 이상적입니다. 프로덕션에서는 더 나은 성능을 위해 Redis나 Memcached와 같은 영속적인 adapter를 사용하는 것이 권장됩니다.
3Symfony 설정에서 커스텀 cache pool을 어떻게 만드나요?
Symfony 설정에서 커스텀 cache pool을 어떻게 만드나요?
답변
커스텀 cache pool은 설정의 framework.cache.pools 키 아래에 정의합니다. 각 pool은 해당 adapter, 기본 수명(default_lifetime), 그리고 선택적으로 tags를 지정할 수 있습니다. 예를 들어 RedisAdapter를 사용하는 'app.cache.products' pool을 통해 제품 캐시를 다른 데이터와 독립적으로 관리할 수 있어 대상을 지정한 무효화가 쉬워집니다.
값이 없을 경우 계산용 callback과 함께 캐시에서 값을 가져오려면 어떤 메서드를 사용하나요?
Symfony에서 cache tags의 주요 장점은 무엇인가요?
+17 면접 질문