4

我对如何避免客户端机器上的RSL 缓存有点困惑。我有许多模块和一个加载它们的主要应用程序。几乎每个模块和应用程序本身都在使用RSL库(这是我的公共库项目)。

这是它的样子:

  • MyLib.swf ( RSL )
  • MainApp.swf (使用 MyLib.swf 作为RSL
  • modules/Module1.swf (使用 MyLib.swf 作为RSL
  • modules/Module2.swf (使用 MyLib.swf 作为RSL
  • 模块/Module3.swf

问题本身:

现在我正在更改 MyLib 中的代码并编译新版本的 MyLib.swf。我如何确定已经加载旧版本 MyLib.swf 的用户将获得新的RSL而不是旧的缓存?

是否可以使用RSL进行类似的操作:

    var loader: Loader = new Loader();
    loader.load(new URLRequest("MyLib.swf?v1.2.3");

PS - 每次将 MyLib.swf 的名称更改为 MyLib-v1.2.3.swf 之类的名称都不是解决方案,因为我有 20 个模块,并且每次更改 MyLib 中的一些小东西时都会编译所有模块不是一个好的解决方案。

4

1 回答 1

0

您可能根本不需要 RSL。你的ApplicationDomain层次结构是什么?如果您在加载模块时没有明确指定加载上下文,那么您最终会在新子模块中使用每个模块ApplicationDomain

如果这是真的,并且您不打算将旧模块与新应用程序和类似的东西一起使用,您可以通过执行以下操作从根本上优化整个事情:

  1. 在加载第一个模块之前编译所有用于将其MyLib.swf放入MainApp.swf(快速且简单)加载MyLib.swf的类ApplicationDomain.currentDomain

  2. 排除所有 lib 类moduleX.swf(您可能已经这样做了)

PS:关于 Flex RSL。

于 2013-04-30T06:46:02.333 回答