2011-03-17 6 views
0

URL에서 다른 리소스로 이미지를 다운로드하는 것과 관련된 Java 애플릿을 작성 중입니다. 이미지가 캐싱되고 Temporary Internet Files/View .../Resources 아래의 Java 제어판에서 해당 이미지를 볼 수 있음을 발견했습니다. 불행히도 이미지를 업데이트하고 애플릿 실행 사이에 이러한 업데이트를 표시 할 수 있어야하지만 캐시가 문제를 일으킬 수 있습니다.Java에서 리소스 캐싱을 어떻게 제어합니까?

이러한 리소스의 캐싱을 제어하는 ​​것에 대한 정보를 찾을 수 없습니다. 어떤 프로세스가 리소스를 캐싱하고 어떻게 제어합니까? 특히 이미지 또는 심지어 특정 이미지의 만료 시간을 설정하는 방법은 무엇입니까?

관련성이있는 경우 다음과 같은 코드를 사용하여 이미지를 다운로드합니다. (mt는 MediaTracker 객체 임).

public BufferedImage getImageFromUrl(String url) 
{ 
    Image img = null; 
    try { 
     URL u = new URL(url); 
     img = java.awt.Toolkit.getDefaultToolkit().createImage(u); 
     mt.addImage(img, numImages++); 
     mt.waitForAll(); 
     ... 

도움 주셔서 감사합니다.

답변

2

사용이 서버에서 캐시 된 이미지를 피하기 위해 :

URL u = new URL(url); 
URLConnection con = u.openConnection(); 
con.setUseCaches(false); 
img = Toolkit.getDefaultToolkit().createImage(new URLImageSource(u, con)); 

을 당신이 특별히 행을 추가하여 Cache-Control 또는 Expires 헤더를 설정할 수 있습니다 만료 시간을 제어하려면 같은 :

con.addRequestProperty("Cache-Control", "no-cache, max-age=3600"); 
con.addRequestProperty("Expires", "Thu, 17 Mar 2011 01:34:00 GMT"); 
1

이미지를 byte 어레이로 다운로드하려면 URLConnection을 사용하십시오. 이 byte 배열을 createImage()에 전달합니다. URLConnection 개체에서 setUseCaches(false)을 호출하여 캐싱을 해제 할 수도 있습니다.

관련 문제