1

我想利用 Adob​​e 的 swc 运行时共享库​​系统,但我不确定它实际上是如何工作的,比如它背后的编程。我知道它允许您在运行时加载 SWC,但它是如何做到的呢?

我问这个问题是因为我想尝试模仿 Adob​​e 用来将 Flex 框架缓存到 Flash Player 中的 Signed RSL“swz”系统,所以如果您访问过一个为某些 Flash 网站下载 Flex 框架的网站,然后下一次,永远,你不必再次下载它。

我不能这样做,因为我使用的是 Sandbox 中我自己的 Flex SDK 版本,而且我还有 5 个我正在使用的其他 swc(Mate、RestfulX 等)。我希望能够永久缓存这些东西,并且只有在它们发生变化时才让它们重新下载。

除了Adob​​e RSL 文档等之外,我该怎么做,或者我应该阅读什么?我可以使用 javascript 或 ruby​​ 来执行此操作吗?

4

2 回答 2

1

SWC 仅由 Flex 编译器使用。它实际上只是一个 ZIP 文件,其中包含一个带有库中已编译类的 SWF 文件和一个 SWF 文件中的 XML 描述符文件。因此,SWC 文件不能直接用作 RSL,因为 RSL 只是在 Flex 应用程序启动之前加载的 SWF 文件。

Flex 预加载器将加载编译 Flex 应用程序时引用的所有 RSL。在某些情况下,这些 RSL 将被浏览器缓存,因为它们只是 SWF。大多数浏览器不会缓存通过 https 加载的 SWF。

Flash Player 有一个特殊的 SWF 缓存,它不是特定于 URL 的(如浏览器缓存)。为了将内容放入该缓存中,它必须由 Adob​​e 签名。今天唯一被签署的 SWF 是 Fl​​ex 框架和数据可视化 RSL。出于隐私原因,Adobe 预计不会更改此政策(如果您想了解原因,请研究缓存嗅探)。

您可以轻松创建自己的 RSL,这些 RSL 可能会被浏览器缓存。您可以在 Flex Builder 中通过将库指定为 RSL 或直接使用编译器来执行此操作。您可以使用 compc 创建 SWC,然后从 SWC 中提取 SWF 文件以用作 RSL。但要小心,因为许多 SWC 不幸地将它们的依赖项包含在 SWC(通常是 Flex 框架)中。因此,在将 SWF 用作 RSL 之前,您可能需要对 SWC 进行一些优化。Flex SDK 中还有一个优化器工具,您可以使用它来自动执行此过程。

于 2009-11-15T16:52:20.717 回答
0

可悲的答案是这是不可能的。SWZ 文件仅供 adobe 用于其 Flex 框架。但是,如果您将 swc 链接为 RLS,则可能会出现类似于浏览器自己的缓存机制的东西。

于 2009-11-15T05:45:43.830 回答