J'ai une servlet qui sert de proxy pour extraire les images en lisant les images comme des octets d'un flux d'entrée HttpURLConnection, puis en écrivant les octets dans le flux de sortie de la réponse. Voici l'extrait de code pertinent:Meilleure pratique de mise en cache des images lues à partir d'un flux d'entrée Java
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setConnectTimeout(CONNECT_TIMEOUT);
connection.setReadTimeout(READ_TIMEOUT);
InputStream in = connection.getInputStream();
OutputStream out = resp.getOutputStream();
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
Je voudrais commencer à mettre en cache l'image dans le servlet proxy. J'envisage d'envelopper le tableau d'octets et de le stocker dans une carte, mais je soupçonne qu'il existe un meilleur moyen. J'ai remarqué le paquet javax.imagio mais je n'ai aucune expérience avec et je ne sais pas si c'est pertinent ici. Plus précisément, je cherche des idées sur la façon de stocker l'image et pas tellement la mécanique de la mise en cache.
Utilisation parfaite pour WeakHashMap. –
Ce n'est pas un bon usage de 'WeakHashMap'. S'il vous plaît voir http://www.codeinstructions.com/2008/09/weakhashmap-is-not-cache-understanding.html pour une explication de pourquoi pas. Astuce: Vos valeurs disparaîtront dès que personne ne tiendra une référence à vos clés. – uckelman