четверг, ноября 30, 2006

Уменьшение размера swf с помощью удаленных библиотек

Накнулся на интересный пост Джеймса Ворда, в котором рассказано, как уменьшить размер выходного swf файла с помощью использования Runtime Shared Libraries (RSL) - удаленных библиотек. Вот перевод.

Flex 2 позволяет загружать эти библиотеки с других доменов. Подразумевается, что приложение будет указывать на какой-нибудь определенный набор библиотек, который браузер будет быстро доставать из кэша. Перед началом необходимо заметить, что это не поддерживается Adobe, хотя команда разработчиков и работает в этом направлении, пока это просто хак. Во-вторых, пока нет нормального централизованного хранилища для RSL- библиотек, они хранятся на моем сервере, который может быть взломан и вместо изначальных библиотек вы получите какие-нибудь опасные компоненты. Несмотря на эти препоны, этот способ удовлетворяет большинство приложений и позволяет значительно уменьшить их размер. Как же это применить?

Мною было создано три библиотеки: малая, средняя и большая. Библиотеки взаимодополняемы, то есть, если необходимо использовать среднюю, то загружать надо малую и среднюю. См. таблицу у автора.


1) Скачайте необходимые SWC для RSL
2) Измените build path проекта
2.1) Если вы компилируете с помощью Ant или командной строки, определите пути к библиотекам следующим образом:

flex2-sdk/bin/mxmlc -external-library-path+=build/framework-2_0_0_a-small.swc,
build/framework-2_0_0_a-medium.swc -runtime-shared-libraries=
http://ws.jamesward.org/framework-2_0_0_a-small.swf,
http://ws.jamesward.org/framework-2_0_0_a-medium.swf-o=
build/testHostedFlexLibs-medium.swf -file-specs=test/testHostedFlexLibs.mxml

2.2) Если вы используете Flex Builder, перейдите в Project -> Properties -> Flex Build Path -> Library Path -> Add SWC -> [добавьте необходимые SWC]. Затем выберите SWC’s RSL URL и нажмите кнопку Edit. Измените Link Type на "Runtime shared library (RSL)", введите правильный URL, уберите галку с "Auto extract checkbox", затем нажмите OK.

2.3) Если вы используете FDS, добавьте SWC в папку flex/user_classes и обновите runtime-shared-libraries соответственно в файле flex-config.xml.

3) Перекомпилируйте приложение (если этого не произошло автоматически) и размер файла значительно уменьшится!

4) Еще одна преграда - приложение будет работать только из интернета, потому что политика безопасности запрещает загружать внешние ресурсы.

Комментариев нет: