对于如何避免在客户端计算机上进行RSL缓存,我有些困惑。
我有很多模块和一个加载它们的主要应用程序。几乎每个模块和应用程序本身都使用RSL库(这是我的公共库项目)。
看起来是这样的:

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

问题本身:
现在,我要更改MyLib中的代码,并编译MyLib.swf的新版本。我如何确定已经加载了旧版本的MyLib.swf的用户将获得新的RSL,而不是旧的,已缓存的RSL?
是否可以使用RSL进行类似的操作:

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

附言-每次将MyLib.swf的名称更改为MyLib-v1.2.3.swf之类的方法都不是解决方案,因为我拥有20个左右的模块,并且每次在MyLib中进行较小的更改时都将它们全部编译为不是一个好的解决方案。

最佳答案

您可能根本不需要RSL。您的ApplicationDomain层次结构是什么?如果在加载模块时未明确指定加载上下文,则结果为each module in a new child ApplicationDomain

如果是这样,并且您不打算将旧模块与新应用一起使用,则可以通过以下操作从根本上优化整个过程:


在加载第一个模块之前,将用于将其MyLib.swf放入MainApp.swf的所有类进行编译(快速简便)或将MyLib.swf装入ApplicationDomain.currentDomain
moduleX.swf中排除所有这些lib类(您可能已经在这样做了)


附言:About Flex RSLs.

10-08 04:47