[英]Preventing Flex application caching in browser (multiple modules)
我有一個包含多個模塊的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
選擇了once per session
“瀏覽器緩存檢查策略”。
我遇到了類似的問題,最后將SWF文件放在一個名為內部版本號的子目錄中。 這意味着SWF文件的URL每次都指向不同的位置。
理想情況下,這應該由平台迎合,但沒有喜悅。 但這對我們來說非常有效,並且很容易與Hudson集成到我們的自動構建中 - 到目前為止沒有任何抱怨。
這是樣本。
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是文件,它存在幾個地方的html-template。 但正如我的帖子所說,我正面臨另一種問題。
我所做的是校驗和SWF文件,然后將其添加到其URL。 在重建/重新部署文件之前保持不變。 通過幾行服務器端PHP腳本自動處理
緩存不是由Flash Player完成的,而是由瀏覽器完成的,所以它不受Adobe的控制。 我認為你找到了一個可行的解決方案。 如果我想避免緩存,我通常會在URL上附加一個隨機數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.