flex - sirven - si borro la memoria cache se borran mis fotos
Cómo controlar el almacenamiento en memoria caché del control de imagen de Flex 3 (6)
La mejor manera de cargar una imagen una sola vez y luego reutilizar esa imagen varias veces en una aplicación flexible es incrustar la imagen y vincularla a una representación de clase, luego simplemente hacer referencia a esa clase a partir de ese momento.
Ejemplo:
[Embed(source="myImage.jpg")]
[Bindable]
public var myImageClass:Class;
HTH
De acuerdo con adobe flex docs: http://livedocs.adobe.com/flex/3/html/help.html?content=controls_15.html
Usar una imagen varias veces
Puede usar la misma imagen varias veces en su aplicación utilizando la sintaxis de importación de imágenes normal cada vez. Flex solo carga la imagen una vez y luego hace referencia a la imagen cargada tantas veces como sea necesario.
Sin embargo, en las pruebas, hemos encontrado que si solicita la misma imagen (misma URL, etc.) en IE flash 9/10, no se emitirá una nueva solicitud http, pero con Firefox, Safari (PC y MAC), se solicita una nueva solicitud. siempre emitido.
Quiero evitar que la imagen se extraiga del servidor cada vez que lo intento y lo uso. ¿Alguien tiene alguna idea de por qué esto solo funciona en IE?
La verdadera pregunta no es cómo almacenar en caché una imagen, pero ¿por qué IE utiliza una imagen en caché del navegador cuando FF, Safari, Chrome, etc. no lo hacen? (IE7 por cierto).
Todavía estoy tratando de encontrar una aplicación de ejemplo de tamaño razonable. Tenemos un lienzo, con un mx: Image o mx: SWFloader. El lienzo se recrea, sin embargo, la URL de la imagen es idéntica, por lo que el navegador debe devolver la imagen en caché y no emitir otra solicitud para ello. Un ejemplo muy simple de solo un mx: la imagen donde establece el origen, borra la fuente y restablece el origen utiliza correctamente la imagen en caché en todos los navegadores.
También tuve éxito al cargar la imagen una vez y luego reutilizarla como fuente de propiedad:
<mx:Image id="myImage" source=''blah.png''/>
var myNewImage:Image = new Image();
myNewImage.source = myImage.source;
Aquí está la respuesta: NUNCA pienses que IE lo está haciendo correctamente. IE estaba equivocado, todos los otros navegadores estaban correctos. Los archivos .swf se devolvían con Cache-control: encabezado privado. IE NO debería haber devuelto la imagen en caché. Establecer correctamente el encabezado Cache-Control dio como resultado que todos los navegadores se comporten como se esperaba.
El problema es el tiempo de caducidad de tus imágenes. Configure en el servidor de aplicaciones la política de tiempo de caducidad de las imágenes y la caché se ejecuta correctamente en todos los navegadores.
Una solución consiste en crear su propia memoria caché de imágenes con ActionScript guardando BitMapData de la instancia original y usándola como fuente para instancias posteriores:
private var image1:Image = new Image();
private var image2:Image = new Image();
private function init() : void
{
image1.addEventListener(Event.COMPLETE, onComplete);
image1.source = "icon.png";
addChild(image1);
}
private function onComplete(event:Event) : void
{
var image:Image = event.target as Image;
var bitmapData:BitmapData = new BitmapData(image.content.width,
image.content.height, true);
bitmapData.draw(image.content);
image2.source = new Bitmap(bitmapData);
addChild(image2);
}
Creé un ejemplo completamente funcional y publiqué la fuente aquí .