내 필터를 구축 할 필요없이 정적 리소스에서 캐시 헤더를 설정할 수있는 상자 캐시 제어 응답 헤더 필터가 있습니까? 그것은 일반적인 일처럼 보입니다. 스프링 필터가 있습니까? 현재 Tomcat 6.0을 사용 중이며 Spring의 ShallowEtagHeaderFilter를 사용하여 etag을 내 리소스에 설정하고 있지만 캐시 제어 헤더도 추가해야합니다.바로 캐시 제어 헤더 필터?
4
A
답변
2
DelegatingFilterProxy을 사용하여 캐시 헤더를 처리하기 위해 WebContentGenerator의 고유 한 impl을 지정합니다. WebContentGenerator는 Spring을 사용하여 DelegatingFilterProxy에 종속적으로 삽입됩니다. impl은 또한 Filter을 구현하고 doFilter에서 WebContentGenerator의 적절한 캐시 설정 메소드를 호출합니다. 바울의 솔루션에
5
세부 사항 :
public class ResponseCachingFilter extends WebContentInterceptor implements
Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
this.preHandle((HttpServletRequest) request,
(HttpServletResponse) response, chain);
} catch (Exception e) {
throw new ServletException(e);
}
chain.doFilter(request, response);
}
...
의 web.xml :
<bean id="responseCachingFilter" class="lala.ResponseCachingFilter">
<property name="cacheSeconds" value="0" />
<property name="useExpiresHeader" value="true" />
<property name="useCacheControlHeader" value="true" />
<property name="useCacheControlNoStore" value="true" />
<property name="cacheMappings">
<props>
<!-- cache for one month -->
<prop key="/**/*.html">2592000</prop>
<prop key="/**/*.htm">2592000</prop>
<prop key="/**/*.jpg">2592000</prop>
<prop key="/**/*.gif">2592000</prop>
<prop key="/**/*.css">2592000</prop>
<prop key="/**/*.js">2592000</prop>
</props>
</property>
</bean>
12
:
<filter>
<filter-name>responseCachingFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>responseCachingFilter</filter-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.css</url-pattern>
</filter-mapping>
과의 (최상위, 즉,하지 MVC - 서블릿) 애플리케이션 컨텍스트
정적 파일의 경우 mvc : resources를 사용하고 비 정적 파일의 경우 WebContentInterceptor와 함께 mvc : interceptors 사용
<!-- cache for one month -->
<mvc:resources location="/css/" mapping="/css/**" cache-period="2592000"/>
<!-- don't send any cache headers, rely on last-modified timestamps only -->
<mvc:resources location="/img/" mapping="/img/**"/>
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**/*.htm" />
<bean id="responseCachingFilter" class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="0" />
<property name="useExpiresHeader" value="true" />
<property name="useCacheControlHeader" value="true" />
<property name="useCacheControlNoStore" value="true" />
<property name="cacheMappings">
<props>
<!-- cache for one month -->
<prop key="/**/*.htm">2592000</prop>
</props>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
관련 문제
- 1. 캐시 제어 HTML 헤더
- 2. ASP.NET의 캐시 제어 헤더
- 3. 만료/캐시 제어 헤더 문제
- 4. 캐시 제어 헤더 및 Heroku 동적 이미지
- 5. HTTP의 캐시 제어 헤더 최대 값
- 6. HTTP 캐시 - 제어
- 7. HTTP 캐시 헤더 작동 방법
- 8. .htacces 캐시 제어
- 9. Tomcat의 캐시 제어
- 10. 대체 제어 및 캐시 위치
- 11. Tapestry 4 : 자산 캐시 제어?
- 12. 캐시 가능한 리소스의 Glassfish http 헤더 설정
- 13. PHP 헤더를 통한 캐시 제어 - Chrome Works/Firefox가 없습니다
- 14. 캐시 제어 헤더가 반복됩니다. 유효하지 않습니까? (Nginx)
- 15. Apache 서버에서 .htaccess를 사용하여 캐시 제어 구현하기
- 16. ASP.NET에서 여러 캐시 제어 지시문을 설정하는 방법
- 17. PHP에서이 캐시 제어 정책을 구현하는 방법은 무엇입니까?
- 18. 이미 캐시되어야하는 웹 파일의 캐시 제어
- 19. 브라우저의 세계화, 캐시 제어 및 HTTP 날짜
- 20. ASP.NET 출력 캐시 메모리 사용 제어
- 21. 웹 서버 설정 액세스 제어 허용 헤더
- 22. DirectShow 필터 디버깅
- 23. Exif 메타 데이터는 항상 JFIF 헤더 바로 뒤에 저장됩니까?
- 24. 사용자 제어 수준에서 대체 제어?
- 25. 바로
- 26. HTTP 헤더 : 캐시 제어가 충분합니까? 아니면 만료가 여전히 필요합니까?
- 27. 동적 CSS (PHP를 통해 생성) 용 캐시 헤더
- 28. IE가 AJAX 요청에 대한 캐시 제어 헤더를 완전히 무시합니까?
- 29. mod_expires가 JPEG 이미지에 캐시 제어 헤더를 설정하지 않음
- 30. 이러한 차이 캐시 제어 매개 변수의 차이점은 무엇입니까?
필터 매핑에는 하나의 URL 패턴 만있을 수 있습니다. responseCachingFilter bean이 확장을 기반으로하는 캐시 매핑을 지정하기 때문에/* url-pattern>을 의미합니까? –