2009-11-14 17 views
1

我想利用Adobe的運行時共享庫​​系統來處理swc,但我不確定它是如何工作的,就像它背後的編程一樣。我知道它允許您在運行時加載SWC,但它是如何實現的?在瀏覽器中手動緩存SWF/SWC - 模仿Adobe的簽名SWZ?

我在問,因爲我想嘗試模仿像Adobe簽署的用於將Flex框架緩存到Flash Player中的簽名RSL「swz」系統,因此如果您訪問過下載Flex框架一些flash網站,然後下一次,永遠,你不必再次下載它。

我不能這樣做,因爲我使用我自己的Sandbox版本的Flex SDK,並且我有5個其他的我正在使用的swc(Mate,RestfulX等)。我希望能夠永久性地緩存這些內容,並且只有在它們發生變化時才能重新下載它們。

除了Adobe RSL docs等之外,我該怎麼做,或者我該讀什麼?我可以使用JavaScript或紅寶石來做到這一點?

回答

1

SWC僅由Flex編譯器使用。它實際上只是一個ZIP文件,其中包含一個SWF文件,其中包含庫中已編譯的類以及SWF文件中的XML描述符文件。因此,SWC文件不能直接用作RSL,因爲RSL只是在Flex應用程序啓動之前加載的SWF文件。

Flex預加載器將加載編譯Flex應用程序時引用的任何RSL。在某些情況下,這些RSL將被瀏覽器緩存,因爲它們只是SWF。大多數瀏覽器不會緩存通過https加載的SWF。

Flash Player有一個特殊的SWF緩存,它不是URL特定的(如瀏覽器緩存)。爲了將東西放入緩存中,它必須由Adobe簽名。今天,唯一正在簽署的SWF是Flex框架和數據可視化RSL。出於隱私原因,Adobe不會預見更改此政策(如果您想了解原因,請研究緩存嗅探)。

您可以輕鬆創建可由瀏覽器緩存的自己的RSL。您可以在Flex Builder中通過將庫指定爲RSL或直接使用編譯器來執行此操作。您可以使用compc創建SWC,然後從SWC中提取SWF文件以用作RSL。但要小心,因爲很多SWCs不幸包含它們在SWC(通常是Flex框架)中的依賴關係。因此,在使用SWF作爲RSL之前,您可能必須對SWC進行一些優化。 Flex SDK中還有一個優化器工具,您可以使用該工具來自動執行此過程。

+0

我仍然不確定,我能爲Flex SDK創建一個RSL嗎? – 2009-11-16 00:23:42

+0

沒有簽名? – 2009-11-16 00:24:12

+0

你可以爲你想要的任何類創建一個RSL。 RSL不能使用FP緩存,但可能會在瀏覽器中緩存。 – 2009-11-18 17:32:07

0

可悲的答案是,這是不可能的。 SWZ文件只能由Adobe用於他們的Flex框架。但是,如果您將swc鏈接爲RLS,則可能會出現類似於瀏覽器自身的緩存機制。

+0

那麼我的問題是,我如何從JavaScript控制瀏覽器的緩存機制? – 2009-11-15 05:47:52

+0

我不認爲你可以繞過瀏覽器的設置。 – sharvey 2009-11-15 16:21:10

+0

瀏覽器高速緩存本質上是發生的,因此無法控制它。你所能做的只是請求一個URL,如果瀏覽器想要緩存該URL的內容,那麼它會。 – 2009-11-18 17:33:02