PDA

Просмотр полной версии : Флеш плеер - как вынести библиотеки из swf?


prrt
09.03.2013, 14:33
Разрабатываю флеш плеер в среде Adobe Flash Builder. В результате получается плеер размером около 300 KB (swf файл). В то же время, если смотреть флеш плеер от Adobe, то там сам плеер (т.е. swf файл) занимает менее 2 KB, а всё остальное (тоже около 300 KB) вынесено в отдельный файл .swz. Преимущество в том, что swz грузится только один раз, а потом сколько бы раз человек не заходил на страницы сайта, будет подгружаться только swf, даже если он очистит весь кеш.

Подскажите, как сделать то же самое в Flash Builder в собственном плеере? Т.е. чтобы размер самого плеера был минимальным, а всё остальное - в библиотеку, которую каждый клиент загружал бы только один раз.

Tails
09.03.2013, 16:57
Но если пользователь очистит весь кеш, swz ведь тоже удалится?

caseyryan
09.03.2013, 17:45
Нет, он сохраняется в специальный кэш флеш плеера. Что-то типа SharedObject для всех доменов

iflamberg
09.03.2013, 22:37
Что, правда что ли? Кеш флеш-плеера не связан с кешем бразуера?

caseyryan
09.03.2013, 23:02
Кеш флеш-плеера не связан с кешем бразуера?
Нет. Так же как и шерд объекты не связаны с куками браузера.
Вообще, штука клевая. Надо будет использовать в своих проектах.

Inet_PC
09.03.2013, 23:27
swz библиотеки (RSL) сделать не получится, так как они подписываются ключом который есть только у Adobe (http://livedocs.adobe.com/flex/3/html/help.html?content=rsl_09.html).

mikhailk
10.03.2013, 00:45
Нет. Так же как и шерд объекты не связаны с куками браузера.
Вообще, штука клевая. Надо будет использовать в своих проектах.

Я использовал, но есть нюансы. Первый - скорость записи и чтения. Второй - если пользователь в настройках флешплеера поставит не выделять памяти, то туда ничего не записать.

chamele0n
10.03.2013, 01:13
даже если он очистит весь кеш.

сам то веришь в это ?
или думаешь что адобы засоряют милиарды компьютеров ?

п.с.
SharedObject очищается вместе с очисткой кеша\куков браузера

caseyryan
10.03.2013, 11:05
swz библиотеки (RSL) сделать не получится, так как они подписываются ключом который есть только у Adobe (http://livedocs.adobe.com/flex/3/html/help.html?content=rsl_09.html).
Дану? Вот пример игры (http://vk.com/app2875379), в которой в такой библиотеке хранится персонаж
Разработчики этой игры никакого отношения к адоби не имеют. Как же им это удалось?
SharedObject очищается вместе с очисткой кеша\куков браузера
Не совсем. То есть, они удалятся, но не тем же механизмом, что сносит куки. API для удаления локальных шерд объектов появился в браузерах в 2011 году (http://www.softcity.com/article/os-utilities/ccleaner/solutions-to-deleting-flash-cookies-lso-local-shared-objects/wNwgTMwADN)
И хранятся они не там же, где и обычные куки. Так же swz хранятся в отдельном месте. Можете в этом убедиться загрузив эту игру. Она грузится первый раз в одном браузере подольше, а потом загружается быстро в любом.

Wolsh
10.03.2013, 11:21
C:\Users\****\AppData\Roaming\Adobe\Flash Player\AssetCache
у меня там 24 файла swz, например.

Добавлено через 32 минуты
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/fl/rsl/package-detail.html

Inet_PC
10.03.2013, 14:08
Дану? Вот пример игры, в которой в такой библиотеке хранится персонаж
Разработчики этой игры никакого отношения к адоби не имеют. Как же им это удалось?
Я не знаю, что и как им там удалось, но кроме textLayout_1.0.0.595.swz это приложение других swz не грузит. Анимация персонажа у них хранится в обычном swf файле.
Я указал ссылку на документацию в которой черным по белому написано:
The framework RSLs are signed and have the extension SWZ. Only Adobe can create signed RSLs, and only signed RSLs can be stored in the Player cache. If you create an RSL that contains a custom library, it will be unsigned. You cannot sign it. , а не какие-то свои домыслы.
Если Вы знаете как сделать свою swz библиотеку (в чем я сильно сомневаюсь), которую плеер сможет загрузить в собственный кэш, то пожалуйста расскажите как этого добиться.

prrt
10.03.2013, 14:13
Получается, тут одно из двух. Либо, используя недокументированные возможности, можно как-то создать такой swz. Либо, что более вероятно, каким-то образом можно их всё-таки подписать ключем Adobe. Т.к. из документации действительно получается, что такое невозможно:

Framework RSLs come in two versions: signed and unsigned. Signed framework RSLs are cached in a special Player cache rather than the browser cache.
Only Adobe can create signed RSLs, and only signed RSLs can be stored in the Player cache. If you create an RSL that contains a custom library, it will be unsigned. You cannot sign it.

Получается, официально можно создать только неподписанную библиотеку, которая будет работать только в том же домене. Правда большого смысла это не имеет, т.к. плеер и так кешируется.

Inet_PC, одновременно отправили цитату)

alatar
10.03.2013, 14:26
caseyryan, а можно пример swz от этих ребят выложить. А то в Apache Flex народ мучается и не знает о такой возможности, да и в Adobe не в курсе (http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7add.html) :)