четверг, февраля 28, 2008

Использование RSL классов фреймворка и кэширование в плеере

Эта статья является вольным и неполным переводом статьи из хелпа по поводу использования RSL и кэширования плеера.

Каждое Flex приложение использует Flex фреймворк, который сам по себе является широким набором классов, определяющих инфраструктуру приложения. Если пользователь загружает два различных приложения, то эти приложения будут содержать одни и те же классы фреймворка.

Чтобы не внедрять одни и те же классы на этапе компиляции, можно использовать внешние библиотеки классов (Runtime Shared Libraries или RSL) классов flex-фреймворка, то есть подгружать эти классы на этапе загрузки приложения. Существует два вида RSL классов фреймворка – подписанные и неподписанные. Подписанные RSL кэшируются плеером, доступ к ним возможен из любых приложений вне зависимости от доменов. Они не удаляются при очистке кэша браузера. Неподписанные RSL кэшируются браузером и могут использоваться только приложениями, которые имеют доступ к домену RSL.

Flash Player 9.0.115 поддерживает загрузку подписанных RSL классов фреймворка. Эти RSL имеют расширение SWZ, и только Adobe может их создавать. Для плееров версий ниже 9.0.115 будут автоматически загружаться запасные неподписанные RSL, если конечно они были определены при компиляции приложения.

Только приложения, скомпилированные с помощью Flex 3, могут использовать подписанные RSL.

Существующие RSL

Для SDK RSL классов фреймворка находятся в папке flex_sdk_dir/frameworks/rsls, для Flex Builder - flex_builder_dir/sdks/3.0.0/frameworks/rsls. Файлы именуются следующим образом – версия Flex плюс версия сборки компилятора. Следующие RSL классов фреймворка включены в продукты Flex:

  • framework_3.0.build_number.swz (подписанная RSL классов фреймворка)
  • framework_3.0.build_number.swf (неподписанная RSL классов фреймворка)
  • rpc_3.0.build_number.swz (подписанная RSL классов сервисов данных (data services)
  • rpc_3.0.build_number.swf (неподписанная RSL классов сервисов данных)
  • (Только для Flex Builder) datavisualization_3.0.build_number.swz (подписанная RSL классов визуализации данных)
  • (Только для Flex Builder) datavisualization_3.0.build_number.swf (неподписанная RSL классов визуализации данных)

Данные библиотеки уже оптимизированы.

Flex также включает некоторые SWC файлы, которые можно использовать как стандартные или кросс-доменные RSL. Эти библиотеки неоптимизированны и не подписаны. Они находятся в папке frameworks/libs: automation.swc и qtp.swc. Это классы для автоматизированного тестирования приложения.

Кэш плеера

По умолчанию, максимальный размер кэша плеера равен 20MB. После превышения этого размера кэш автоматически очищается от файлов, которые реже всего использовались. Очистка происходит, пока размер кэша не станет меньше 60%, то есть по умолчанию 12MB. С помощью Settings Manager можно регулировать место, отведенное под кэш плеера.

В следующей таблице показаны папки, в которых плеер хранит кэш:

Windows 95/98/ME/2000/XP - C:\Documents and Settings\user_name\Application Data\Adobe\Flash Player\AssetCache\

Windows Vista - C:\Users\user_name\AppData\Roaming\Adobe\Flash Player\AssetCache\

Linux - /home/user_name/.adobe/Flash_Player/AssetCache/

Mac OSX - /Users/user_name/Library/Cache/Adobe/Flash Player/AssetCache/

Использование RSL классов фоеймворка

Использовать RSL классов фреймворка просто:

  1. заходим в свойства проекта;
  2. Flex Build Path -> Library Path
  3. Раскрываем Flex 3 -> framework.swc -> Link type -> Edit
  4. Ставим в выпадающем списке RSL и добавляем (Add) 2 файла – framework_build_number.swz и framework_build_number.swf
  5. Теперь эти два файла сохранятся в вашем проекте

Кстати, размер пустого приложения при использовании внешних библиотек сократился со 150 Кб до 50, правда сама библиотека весит порядка 550Кб, но она сохраняется в кеше и грузится только один раз.

1 комментарий:

Анонимный комментирует...

Пришлость отказаться от этой идеи из-за следующего бага:
http://bugs.adobe.com/jira/browse/SDK-15282