簡體   English   中英

防止在瀏覽器中使用Flex應用程序緩存(多個模塊)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM