Bilder cachen ?

Status
Nicht offen für weitere Antworten.

The_God

Aktives Mitglied
Hallo Leute!

Vllt. kann mir ja jemand weiterhelfen. Ich habe ein Applet das zum anschauen einer Karte (besteht aus sehr vielen Teilbildern ) dient.
Ich möchte nun jene Bilder die ich vom Webspace geladen habe nicht jedes mal neu laden (wegen traffic), anstatt dessen möchte ich sie cachen, also nicht auf dem localen Rechner ablegen, da ich hier wieder ein zertifikat brauche.
Gibt es eine Möglichkeit diese in einen Cache zu laden, und wenn ja wie geht das ???:L
 

The_God

Aktives Mitglied
der cache soll schon auf dem lokalen rechner sein, aber die datei sollen nicht in zb. c:\temp\pics geschrieben werden, hierfür bräuchte ich dann ein zertifikat
 

Wildcard

Top Contributor
Du brauchst für alles was du auf die Platte packen willst ein Zertifikat.
Oder reden wir hier von der Laufzeit, also das während einer 'Session' die Bilder nicht neu geladen werden müssen?
 

Wildcard

Top Contributor
Falls letzteres zutrifft:
Code:
import java.awt.Image;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import javax.imageio.ImageIO;


public class ImageCache {
	
	private static Map<URL, Image> cache = new HashMap<URL, Image>();
	
	public static Image getImage(URL url){
		if(cache.containsKey(cache))
			return cache.get(url);
		Image image = null;
		try {
			image = ImageIO.read(url);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		cache.put(url,image);
		return image;
		
	}

}
 

The_God

Aktives Mitglied
oh sry. natürlich während der Laufzeit, danach können die Daten wieder weg sein.
ist diese liste durch den xmx der VM begrenzt oder wird das in eine temporäre datei ausgelagert?
 

Wildcard

Top Contributor
Ist durch xmx begrenzt. Wenn das Probleme bereitet kannst du den Cache entweder aufbohren, oder SoftReferences verwenden. Webstart ist auch eine alternative wenn du definitiv über die 64MiB gehen willst.
 

The_God

Aktives Mitglied
*g* cache aufbohren??? -> der cache kann ja nur durch den besitzer des laufzeitcomputers erhöht werden, oder gibts da eine andere möglichkeit?
 

Wildcard

Top Contributor
Ich rede von einem intelligenten Verhalten der Klasse die ich dir geschrieben habe.
Du musst sie so um einen Caching Algorithmus deiner Wahl erweitern der bestimmt wann ein Element aus dem Cache gekickt wird.
 

The_God

Aktives Mitglied
klar, kicke das bild aus der liste das ich am unwahrscheinlichsten wieder brauche. der vm-cache bleibt aber konstant.

eine kurze frage noch, kann ich in der laufzeitumgebung den aktuell zur verfügung stehenden speicher abfragen??
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben