ejemplo - Prevención del almacenamiento en caché de la aplicación Flex en el navegador(módulos múltiples)
recommended cache control (5)
Tengo una aplicación Flex con múltiples módulos.
Cuando volví a desplegar la aplicación, descubrí que los módulos (que se implementan como archivos swf separados) se almacenaban en caché en el navegador y las nuevas versiones no se cargaban.
Así que probé el viejo truco de agregar ?version=xxx
a todos los módulos cuando se cargan. El valor xxx
es un parámetro global que en realidad se almacena en la página html del host:
var moduleSection:ModuleLoaderSection;
moduleSection = new ModuleLoaderSection();
moduleSection.visible = false;
moduleSection.moduleName = moduleName + "?version=" + MySite.masterVersion;
Además, necesitaba agregar ?version=xxx
al archivo .swf principal que se estaba cargando. Como esto se hace por HTML, tuve que hacer esto modificando mi archivo AC_OETags.js como se muestra a continuación:
function AC_FL_RunContent(){
var ret =
AC_GetArgs
( arguments, ".swf?mv=" + getMasterVersion(), "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
, "application/x-shockwave-flash"
);
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
Esto está bien y funciona muy bien. Simplemente me cuesta creer que Adobe todavía no tenga una forma de manejar esto. Dado que Flex está siendo diseñado para diseñar aplicaciones modulares para empresas, me resulta especialmente sorprendente.
¿Qué hacen otras personas? Necesito asegurarme de que mi aplicación vuelva a cargarse correctamente, incluso si alguien tiene once per session
seleccionada para su ''política de verificación de caché del navegador''.
El almacenamiento en caché no está hecho por Flash Player, sino por el navegador, por lo que está fuera del control de Adobe. Creo que has encontrado una solución viable. Si deseo evitar el almacenamiento en caché, generalmente añado un número al azar en la URL.
Lo que hice fue la suma de comprobación del archivo SWF y luego lo agregué a su url. Permanece igual hasta que el archivo se reconstruye / redistribuye. Manejado automágicamente por unas pocas líneas de script PHP del lado del servidor
Tuve un problema similar y terminé colocando los archivos SWF en un subdirectorio llamado número de compilación. Esto significaba que la URL de los archivos SWF apuntaba a una ubicación diferente cada vez.
Idealmente, esto debería ser atendido por la plataforma, pero no hay alegría allí. Pero esto funciona perfectamente para nosotros, y se integra muy fácilmente en nuestras compilaciones automáticas con Hudson, no hay quejas hasta el momento.
aquí hay una muestra
function AC_FL_RunContent(){
var ret = AC_GetArgs(arguments, ".swf?ts=" + getTS(), "movie",
"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",
"application/x-shockwave-flash");
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function getTS() {
var ts = new Date().getTime();
return ts;
}
AC_OETags.js es un archivo y existe html-template en varios lugares. pero como dijo mi publicación, me enfrento a otro tipo de problema.