303
17
장
정적 콘텐츠
발자가 제어할 수 없는 이유 때문에 브라우저가 캐시에서 자원을 삭제할 가능성이 있습니다.
예를 들어 사용자가 직접 캐시를 비울 수도 있고, 사용자가 더 자주 방문하는 곳에서 자원을 캐
시할 공간을 확보하기 위해 브라우저가 여러분의 사이트에서 캐시한 자원을 삭제할 수도 있습
니다. 두 헤더 중 하나만 사용하면 되고, 둘 중
Expires
가 더 널리 지원합니다. 자원이 캐시 안
에 존재하고 아직 만료되지 않았으면 브라우저는
GET
요청을 아예 보내지 않으므로 성능이 향
상됩니다. 모바일에서는 이 혜택이 더 큽니다.
Last
-
Modified
/
ETag
이 두 헤더는 일종의 버전 관리 역할을 합니다. 브라우저는 자원을 가져오기 전에 먼저 이 헤더
를 검사합니다. 서버에
GET
요청을 보내는 것은 마찬가지이지만, 이들 헤더를 검사한 결과, 자
원이 바뀌지 않았다고 확인되면 파일을 실제로 내려받지 않습니다. 이름에서 짐작할 수 있듯
Last
-
Modified
는 자원을 마지막으로 수정한 날짜를 기록합니다.
ETag
에는 임의의 문자열을
기록할 수 있는데, 보통 버전 문자열이나 콘텐츠 해시를 사용합니다.
정적 자원을 전송할 때는
Expires
헤더와
함께
Last
-
Modified
또는
ETag
헤더를 사용해야
합니다. 익스프레스에 내장된
static
미들웨어는
Cache
-
Control
헤더를 설정할 뿐
Last
-
Modified
나
ETag
는 설정하지 않습니다. 개발에는 적합하지만 실무에는 큰 도움이 되지 않습
니다.
AWS
클라우드프런트, ...