У меня есть приложение Flex с несколькими модулями.
При повторном развертывании приложения я обнаружил, что модули (которые развернуты в виде отдельных SWF-файлов) кэшировались в браузере, а новые версии не загружались.
Итак, я попробовал старый трюк добавления ?version=xxx
ко всем модулям, когда они загружены. Значение xxx
является глобальным параметром, который фактически хранится на html-странице хоста:
var moduleSection:ModuleLoaderSection;
moduleSection = new ModuleLoaderSection();
moduleSection.visible = false;
moduleSection.moduleName = moduleName + "?version=" + MySite.masterVersion;
Кроме того, мне нужно было добавить ?version=xxx
к основному .swf, который загружался. Поскольку это делается с помощью HTML, мне пришлось это сделать, изменив мой файл AC_OETags.js, как показано ниже:
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);
}
Это все нормально и прекрасно работает. Мне просто трудно поверить, что у Adobe еще нет способа справиться с этим. Учитывая, что Flex предназначен для разработки модульных приложений для бизнеса, я нахожу это особенно удивительным.
Что делают другие люди? Мне нужно убедиться, что мое приложение перезагружается правильно, даже если кто-то выбрал once per session
для своей «политики проверки кэша браузера».