• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

실무에서 캐시 처리를 할 때 질문입니다.

23.04.15 10:06 작성 조회수 336

0

안녕하세요 캐시 강의 듣다가 궁금한점이 생겨서 질문하게 되었습니다.

https://www.inflearn.com/questions/112647/no-store-%EB%A1%9C%EB%8F%84-%EC%B6%A9%EB%B6%84%ED%95%A0-%EA%B2%83-%EA%B0%99%EC%9D%80%EB%8D%B0-no-cache-must-revalidate-%EB%8A%94-%EC%99%9C-%EA%B0%99%EC%9D%B4-%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%B8%EA%B0%80%EC%9A%94

위 링크를 참고했는데요~

캐시 기능에 대해 여러 클라이언트 환경을 지원하는 셋팅을 하려면

  1. 캐시를 사용할 대상 (정적 리소스)에 헤더에는 no-cache, must-revalidate, etag를 걸어주고, 캐시를 사용하지 않을 대상에는 no-cache, no-store, must-revalidate를 걸어줘도 성능상 단점이 없을까요?

  2. HTTP 헤더에 값을 넣으려면 여러가지 방법이 있는데 interceptor를 이용해도 성능상 단점이 없을까요?

  3. Thymeleaf에서 prefix, suffix 설정을 하여 viewResolver가 view를 찾으면 캐시된 값에 대해 304 응답코드를 반환하는 반면에, 설정하지 않으면 200 (디스크 캐시, 메모리 캐시) 응답코드가 반환됩니다.. 무슨 차이가 있는건가요?

답변 1

답변을 작성해보세요.

2

안녕하세요. seon님

  1. 캐시를 사용할 대상과 사용하지 않을 대상에 따라서 적절한 헤더를 설정하는 것은 좋은 방법입니다. 다만 캐시가 정말 잘 적용되는지는 직접 테스트하고 확인해보아야 합니다.

  2. 네 괜찮습니다. 성능상 문제는 미미하다고 이해하시면 됩니다.

  3. prefix, suffix는 템플릿 파일의 위치를 설정하는 옵션입니다. 이 부분은 캐시와 무관합니다.

감사합니다.

seon님의 프로필

seon

질문자

2023.04.21

안녕하세요 강사님!

답변내용 잘 봤는데 추가적으로 궁금한 점이 생겨 질문을 드리게 되었습니다.

저희 서버는 이중화가 돼 있고, 웹 서버, WAS서버, DB서버 순으로 처리를 하는데 이 경우도 Interceptor를 이용해 리소스 검증을 할 수 있나요?
서버 이중화로 인해서 동일한 Resource여도 최근수정날짜가 다르고 정적 리소스 요청은 웹서버가 처리하고 WAS로 넘기지 않는 상황입니다.
그래서 WebServer에서 Last-Modified 헤더는 삭제하고 파일 사이즈로 ETag를 걸어서 검증을 하려고 했는데 어떤 방법이 최선일지 고민이 되는데 조언 부탁드립니다!! ㅠ

안녕하세요. seon님

이중화된 서버 환경에서도 Interceptor를 이용하여 리소스 검증을 할 수 있습니다. 하지만, 웹 서버가 정적 리소스를 처리하고 WAS로 넘기지 않는다면, 웹 서버에서 처리해야 할 문제입니다.

정적 리소스의 경우, 웹 서버에서 캐싱 및 유효성 검사를 처리하는 것이 일반적입니다. 웹 서버가 리소스의 변경 사항을 추적하고 적절한 캐싱 전략을 적용할 수 있기 때문입니다.

이중화된 서버 환경에서 정적 리소스의 동기화를 위해 다음과 같은 방법들을 고려해볼 수 있습니다.

  1. 정적 리소스를 공유 스토리지(예: NFS)에 저장하여 모든 서버가 동일한 리소스를 사용하도록 구성할 수 있습니다. 이 경우, 모든 서버가 동일한 Last-Modified 및 ETag 값을 가질 것입니다.

  2. 배포 과정에서 동일한 리소스를 모든 서버에 복사하여 동기화를 유지할 수 있습니다.

파일 사이즈는 같은 파일 사이즈가 존재할 수 있으므로 etag hash 등으로 검색해보시면 더 나은 대안을 찾으실 수 있을거에요.

감사합니다.

seon님의 프로필

seon

질문자

2023.04.24

이 문제 때문에 고민이 많았는데 강사님 덕분에 명확해졌습니다!! 정말 감사드리고 건강하세요^^