【问题标题】:Manually Caching SWF/SWC in the Browser - Mimic Adobe's Signed SWZ?在浏览器中手动缓存 SWF/SWC - 模仿 Adob​​e 的签名 SWZ?
【发布时间】:2009-11-14 22:49:16
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript apache-flex browser-cache framework-caching


    【解决方案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 中还有一个优化器工具,您可以使用它来自动执行此过程。

    【讨论】:

    • 我仍然不确定,我可以为 Flex SDK 创建一个 RSL 吗?
    • 您可以为您想要的任何课程创建 RSL。该 RSL 无法使用 FP 缓存,但可能会缓存在浏览器中。
    【解决方案2】:

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

    【讨论】:

    • 那么我的问题是,如何通过 javascript 控制浏览器的缓存机制?
    • 我认为你不能绕过浏览器的设置。
    • 浏览器缓存是固有的,因此无法控制它。您所能做的就是请求一个 URL,如果浏览器想要缓存该 URL 的内容,它就会缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多