inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 부트 개념과 활용

스프링 웹 MVC 4부: 정적 리소스 지원

setCachePeriod 메소드에 대해..

해결된 질문

835

덩더러러쿨

작성한 질문수 30

0

setCachePeriod 메소드에 20으로 설정했다면 브라우저(client) 편 컴퓨터 캐시에 해당 리소스가 20초간 유지되고, 그 후에는 다시 해당 리소스를 요청해서 응답코드가 200이 된다는 건가요?

이것이 아니라면 전후의 차이가 정확히 무엇인지 다시한번 자세한 설명 좀 부탁드립니다..

java spring spring-boot

답변 5

0

백기선

long 타입의 값을 표현하는 방법입니다.

0

덩더러러쿨

알려주신 WebConfig 클래스 코드를 사용해서 구동시켜보니 304 응답코드가 가 더이상 나타나지는 않았습니다!(당연한거지만...)

그리고 알려주신 저 코드로 수정하여 다시 확인해보았더니, 첫 정적 자원 요청 후 10초 내? 에 새로운 탭에서 요청을 하니 서버에 로그가 출력되지 않은 것을 확인했습니다!

추가적인 질문으로, 여기서 언급한 '10L'의 대문자 L은 무슨 단위인가요? 

0

백기선

이게 사실 테스트 해보기 까다로운 설정이긴 한데요. 몇가지 이유가 있죠.

1. Last Modified 헤더가 있으면 그 헤더 동작을 따릅니다. (지금은 이 경우)

2. (크롬의 경우) 브라우저에서 같은 탭 안에서 요청을 보낸 경우 max-age 무시, 즉 캐시 무시함. 그래서 다른 탭에서 동일한 요청을 보내야 함.

3. 캐시를 사용하는 경우에도 응답이 200으로 나오기 때문에 실제로 캐시를 사용했는지 서버에 다녀왔는지 확인하려면 서버에서 로그를 출력해 봐야함.

registry.addResourceHandler("/m/**")
.addResourceLocations("classpath:/m/")
.setCacheControl(CacheControl.maxAge(Duration.ofSeconds(10L)))
.setUseLastModified(false);

이렇게 설정하면 캐시의 max-age만 설정하고 last modified는 사용하지 않게 됩니다. (하지만 개인적으론 last modified도 사용하는게 좋다고 생각합니다. 캐시가 진행되는 동안에 리소스가 바껴도 반영되지 않으니까요.)

logging.level.org.springframework.web=debug

application.properties에 다음과 같이 웹 요청이 들어오는지 볼 수 있도록 디버그 모드로 로그를 설정합니다.

이제 브라우저를 여시고 정적 자원에 대한 요청을 보내보세요. 그리고 서버에 로그가 출력되는지 보세요. 보일겁니다.

바로 다음에 또 새로운 탭을 열어서 요청을 보내보세요. 그럼 200 응답은 나오지만 서버에 로그가 보이진 않을겁니다. 마치 서버에 아무 요청도 오지 않은것 처럼.

20초가 지난 다음에는 200응답이 보이고 서버에 로그도 보일겁니다. 이때는 캐시 max-age가 다 되서 서버에 요청이 들어오게 된거죠.

0

덩더러러쿨

방금 전에도 직접 확인해봤는데 20초 후에 다시 새로고침해도 여전히 응답코드가 304로 응답이 표시되서 질문했습니다...

0

백기선

네 그렇게 동작하는거 맞아요. 직접 실험을 해보시면 더 좋으실텐데.. 한번 해보시죠.

자동설정 만들기 1부의 Holoman 관련 문의 드립니다.

0

84

1

라이브러리 개발 예제 강의를 찾습니다 !!!

0

225

2

강의 진행되로 똑같이 했는데 jquery가 실행되지 않았는데

0

309

1

HateOas 가 업데이트가 되어서, "Spring HATEOAS" 코드를 아래처럼 하셔야 될겁니다.

0

364

2

springSecurit jwt에 대해서 질문드립니다.

0

343

1

섹션2 자동설정 부분 질문있습니다.

0

248

1

mongo shell 명령어 대체 mongo -> mongosh

0

1012

1

데이터베이스 마이그레이션 강의에서 질문 있습니다

0

707

0

자동 설정 만들기 2부에서 질문 있습니다

0

413

1

의존성 관리 응용 부분에서 질문 있습니다

0

321

0

Intellij 에서 빈 주입할때 계속 빨간줄이 뜨는데 어떻게 고쳐야 할까요

0

1183

1

자동설정으로 다른 프로젝트 빈 사용(번외질문)

0

362

0

CREATE TABLE 예제 따라하다가 'expected "identifier"; SQL statement:' 오류나는 경우

2

2212

2

junit5 관련하여 질문드립니다.

0

307

2

맨 처음 프로젝트 생성 후 Run 시 에러

0

535

2

외부 설정과 관련된 질문입니다.

0

255

1

test와 runner account.setEmail에 동일한 값 입력

0

323

1

컨트롤러 view 호출

0

264

1

JVM 과 arguments 는 뭔가요???

0

1170

1

pom 테그 에러

0

355

1

안녕하십니까 기선님!!!!! webclient와 비동기관련 질문요청드립니다

0

1554

1

webEnvironment 내장 톰캣

0

228

1

application.yml 파일 분리

0

391

1

안녕하세요 기선님 서블릿 어플리케이션 구조에 대해 질문드립니다

0

281

1