캐싱콘텐츠 무효화

Purge는 캐싱된 콘텐츠를 무효화하는 것을 의미한다.

Note

대규모 이상의 서비스 환경이라면 노드 동기화 를 권장한다.

원본으로부터 캐싱된 콘텐츠는 TTL (Time To Live) 에 기반한 갱신주기를 가진다. 하지만 명백히 콘텐츠가 변경되었고 관리자가 이를 즉시 반영하고 싶을 경우 TTL (Time To Live) 이 만료될 때까지 기다릴 필요는 없다. Purge / Expire / HardPurge 등을 사용하면 즉시 콘텐츠를 무효화시킬 수 있다.

무효화 API는 단순히 브라우저에 의해 호출되는 경우도 있지만 자동화되어 있는 경우가 많다. 가령 FTP를 통한 파일 업로드가 끝나면 즉시 Purge 를 호출하는 식이다. 관리자는 다음과 같이 몇가지 동작방식에 대해 설정할 수 있다.

See also

ref-functions-network-cahce-purge

Purge 대상은 명확한 URL, 패턴 2가지를 제공한다.

example.com/logo.jpg      // URL
example.com/img/          // URL
example.com/img/*.jpg     // 패턴
example.com/img/*         // 패턴

명확한 URL 외에 패턴 *.jpg 으로 무효화가 가능하다. 하지만 작업을 수행하기 전까지 대상개수를 명확히 알 수 없다. 이는 자칫 관리자의 의도와 다르게 너무 많은 대상을 지정할 수 있다. 이는 실제로 CPU자원을 너무 많이 소모하게 되어 시스템 전체에 부담을 줄 수 있다.

그러므로 실 서비스 중에는 명확한 URL만을 사용할 것을 강력히 권장한다. 패턴표현은 서비스에서 배제된 상태에서 관리용도로 사용하기 위함이다.

Note

보안적인 이유로 example.com/files/ 같은 특정 디렉토리에 대한 접근은 403 Forbidden 등으로 차단된다. 하지만 루트 디렉토리는 예외를 가진다. 예를 들어 사용자가 example.com에 접근하면 브라우저는 루트 디렉토리(/)를 요청한다.

GET / HTTP/1.1
Host: example.com

이에 대해 웹서버는 관리자가 설정한 기본 페이지(아마도 index.html 또는 index.htm)로 응답한다. 분명 웹 서비스 구성에서 루트 디렉토리(/)는 디렉토리가 아닌 페이지로 동작한다.

하지만 Cache서버는 루트 디렉토리(/)에 접근했더니 200 OK 페이지가 왔다고 이해한다. 심지어 원본서버가 어떤 페이지를 응답했는지 알지 못한다. 간단히 정리하면 Cache서버의 관점에서는 디렉토리 표현도 URL의 한 종류일 뿐이다.

example.com/img/          // example.com 가상호스트의 /img/  접근한 결과 페이지
example.com/              // example.com 가상호스트의 기본 페이지(/)
example.com/img/*         // example.com 가상호스트의 /img 디렉토리와  하위 페이지
example.com/*             // example.com 가상호스트의 모든 콘텐츠