내 서블릿에서 이미지를 제공하고 있습니다. 응답 내용 유형은 image/jpeg입니다. 내 서블릿에서 요청한 이미지는 캐시되지 않습니다. 일반적으로 파일 이미지 요청처럼 캐쉬되도록하려면 어떻게해야합니까? 나는 Cache-Control : public을 설정하려했지만 아무 소용이 없었다. 예를 들어서블릿이 제공하는 이미지 캐싱
답변
좋아요. 기본 헤더 필드가 캐싱을 활성화해야합니다. 다른 포럼에서 해결책을 찾았습니다. 분명히 응답에서 콘텐츠 길이를 명시 적으로 설정해야합니다. 이유는 궁금합니다. 나는 HttpServletResponse가 우리를 위해 그것을 할 것이라고 생각했다. 어쨌든, 그것은 매력처럼 작동했으며 이미지는 멋지게 캐싱되었습니다.
, 당신은 1 개월을 캐시하려면 :
Calendar inOneMonth = Calendar.getInstance();
inOneMonth.add(Calendar.MONTH, 1);
response.setDateHeader("Expires", inOneMonth.getTimeInMillis());
(이 예를 들어, *.jpg
패턴을 처리하는 Filter
에)
그러나 이미지는 기본적으로 캐시해야 - 필터 및 구성을 점검하여 무언가가 캐시 매개 변수를 잘못 설정하지 않았는지 확인하십시오.
응답에 따라 ETag
, Last-Modified
및 Expires
헤더를 보내야합니다. ETag
은 파일의 고유 식별자를 나타냅니다 (보통 filename, filesize 및 lastmodified timestamp의 조합을 기반으로 구성됨). Last-Modified
은 파일의 최종 수정 된 시간 소인을 나타냅니다. Expires
헤더는 클라이언트가 파일을 캐시에 보관할 수있는 기간을 나타냅니다. 캐시가 만료되어 ETag
또는 Last-Modified
을 사용할 수있는 경우 클라이언트는 파일을 갱신해야하는지 확인하기 위해 HEAD
요청을 보냅니다. 그렇지 않은 경우 Expires
이 그에 따라 다시 연기됩니다.
현재 모든 (및 다운로드 이력서 및 자동 GZIP)이 처리하는 서블릿 예를 찾을 수 있습니다 FileServlet supporting resume and GZIP
Tomcat이 어떤 캐시 제어 헤더를 설정하지 않습니다 같은 용기에 정적 콘텐츠를 제공하는 기본 서블릿. 이를 위해 서블릿을 작성할 필요는 없습니다. 다음과 같은 필터를 작성하십시오.
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
long expiry = new Date().getTime() + cacheAge*1000;
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.setDateHeader("Expires", expiry);
httpResponse.setHeader("Cache-Control", "max-age="+ cacheAge);
chain.doFilter(request, response);
}
캐시 제어를 추가하려면 필터를 web.xml의 리소스에 추가하기 만하면됩니다. 예 :
<filter>
<filter-name>CacheControl</filter-name>
<filter-class>filters.CacheControlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheControl</filter-name>
<url-pattern>/images/*</url-pattern>
</filter-mapping>
헤더는 밀리 초 단위로 작동하므로 'cacheAge'는 물건을 캐시 할 시간 (초)입니다. –
이 필터는 CSS 및 자바 스크립트 파일에도 사용할 수 있습니까? – Shadow
- 1. 타사 캐싱 소프트웨어 - 제공하는 기능은 무엇입니까?
- 2. 이미지 브라우저 캐싱. Flex
- 3. jQueryUI 탭 - 캐싱 이미지
- 4. 동적 이미지 캐싱
- 5. 방지 이미지 캐싱
- 6. Memcached에서 이미지 캐싱
- 7. 오래된 이미지 캐싱
- 8. 레일에서 동적 이미지 캐싱
- 9. Codeigniter로 이미지 캐싱
- 10. 브라우저에서 이미지 캐싱
- 11. wP7에서 이미지 캐싱 중지
- 12. 이미지 캐싱 문제
- 13. 아이폰의 이미지 캐싱 문제
- 14. 클라이언트 측 이미지 캐싱
- 15. 이미지 캐싱 관련 문제
- 16. iPhone 앱에서 이미지 캐싱
- 17. 아이폰 이미지 캐싱
- 18. ajax를 사용하여 이미지 캐싱
- 19. Android 이미지 캐싱 - 어떻게?
- 20. 브라우저 이미지 캐싱 규칙
- 21. UITableViewCell 스레드에서 이미지 캐싱
- 22. 서블릿이 MySql 데이터에 액세스합니다.
- 23. 이미지 업로드 서블릿이 Chrome에서 작동하지 않지만 다른 브라우저에서 작동합니다.
- 24. HTML5 iPhone 동적 이미지 캐싱
- 25. PHP로 생성 된 이미지 캐싱
- 26. iPhone에서 웹 콘텐츠 (이미지) 캐싱
- 27. 많은 HD 이미지를위한 이미지 캐싱
- 28. 서블릿이 다른 서블릿의 데이터를 요청하는 방법은 무엇입니까?
- 29. Datagridview에서 이미지 열에 하이퍼 링크를 제공하는 방법
- 30. _layouts 디렉토리의 이미지 및 스크립트 캐싱
아마도 답변을 찾은 포럼에 대한 링크를 제공 할 수 있습니까? – Stewart