2013-08-22 5 views
4

정적 리소스 (이미지, CSS 파일, JavaScript 라이브러리)의 변경 사항을 포함하는 업데이트를 릴리스 할 때 사용자에게 오류가 발생하는 SpringMVC/Thymeleaf 응용 프로그램과 관련된 문제가 있습니다. 문제는 브라우저 캐시에 이전 버전의 리소스가 있기 때문에 발생합니다. 강제로 새로 고치면 문제가 사라지지만 대부분의 사용자는이를 알지 못합니다. 과거 Spring MVC + Thymeleaf : 정적 리소스 업데이트

, 내 빌드는 스프링 빈으로 빌드 번호를 주입 갖고, URL의 빌드 번호를 포함하는 URL 건물 메커니즘을 사용자 정의하여 다른 프레임 워크에서이 문제를 해결했습니다. 이것을 Cache-Control 응답 헤더를 먼 미래의 날짜로 설정하는 것과 결합하면 사용자가 브라우저 캐시에 리소스를 가지고있는 한 새 빌드를 릴리스하지 않는 한 결코 다시 페치되지 않습니다.

스프링 MVC/Thymeleaf는이 문제를 해결할 수있는 내장 된 방법이 있습니까? 그렇지 않은 경우 위에 설명 된 동작을 추가 할 수 있도록 Thymeleaf의 URL 쓰기 메커니즘을 어떻게 재정의합니까?

답변

2

한 가지 해결책은 자신의 방언을 쓰고 자신의 도우미 sr을 정의하는 것입니다. 그런 다음 @{#sr(yoururl)}을 작성할 수 있습니다. 자신의 dialect 작성에 대한 정보를 찾을 수 있습니다. 자신의 유틸리티 객체를 생성에 관해서는

"

, 즉이 IExpressionEnhancingDialect 인터페이스를 구현하는 간단한 사투리를 작성하여 수행 할 수 있습니다. 즉, Thymeleaf가 처리 상황에 getAdditionalExpressionObjects() 방법의 구현에 의해 반환 된 개체를 추가 할 것입니다. "

방언에서 하드 코딩 된 buildnr을 정의 할 수 있습니다.

또 다른 접근법은 buildnr을 항상 모델에 추가 한 다음 @{yoururl(buildnr=${buildnr})}을 쓸 수 있습니다.

또는 더 나은 메시지 소스에 넣고 @{yoururl(buildnr=#{buildnr})}을 사용할 수 있습니다.

관련 문제