Уменьшите настройки размера XAP - в чем выгода? - PullRequest
4 голосов
/ 20 сентября 2009

Используя Silverlight 3, я заметил, что System.Xml.Linq.dll был добавлен в мой файл XAP, увеличив размер с 12 до 58 КБ, поэтому я установил флажок «Уменьшить размер XAP с помощью кэширования библиотеки приложения».

Публикуя приложение в IIS, затем загружая его с включенным Web Dev Helper, я вижу, что когда я открываю приложение, загружается XAP-файл на 12 КБ, а затем System.Xml.Linq.zip загружается на 46 КБ для всего 58к. Всякий раз, когда я обновляю главную страницу приложения, в браузер загружаются одни и те же файлы. Если снять флажок «Уменьшить ...», а затем повторно опубликовать приложение в IIS, каждый раз при загрузке приложения загружается один файл XAP на 58 КБ.

Чем один метод отличается от другого или лучше его? Я мог видеть преимущество, если DLL-библиотека каким-то образом сохранялась на клиентском компьютере, устраняя необходимость загружать ее каждый раз при открытии приложения.

Спасибо Майк Томас

Ответы [ 3 ]

2 голосов
/ 20 сентября 2009

Браузер кэширует по URL, поэтому, разбив ваше приложение на часть, которая часто меняется, и часть, которая, вероятно, останется неизменной в течение длительного времени (часть Linq), и которая может использоваться совместно даже приложениями, вы сохраняете некоторые скачать.

Но это зависит от конкретной ситуации (частота изменений, расположение «общих» DLL и т. Д.), Действительно ли это помогает.

1 голос
/ 10 сентября 2010

Разница в том, что когда DLL находятся вне XAP-файла, даже если браузер запрашивает эти файлы, веб-сервер отвечает 304 Not Modified HTTP response. По умолчанию браузер не будет запрашивать повторную загрузку этих файлов. Это, очевидно, экономит время, особенно когда проект ссылается на «тяжелые» библиотеки (т.е. библиотеки Telerik могут быть довольно большими по размеру)

Надеюсь, это кому-нибудь поможет.

1 голос
/ 21 сентября 2009

Вся причина сохранения небольшого размера XAP в том, что ваше приложение загружается как можно быстрее. Это важно: даже при более быстром соединении раздутый XAP может загрузить дополнительные секунды, что может быть достаточно для того, чтобы пользователи покинули ваш сайт.

В то время как Linq учитывает только 46 КБ, существуют другие случаи, когда это может иметь большее значение. Например, класс SyndicationFeed позволяет действительно легко обрабатывать каналы RSS и ATOM, но его вес составляет 114 КБ.

Кэширование библиотеки приложений помогает двумя способами:

  1. Он позволяет совместно использовать общие библиотеки DLL между приложениями, поэтому, если другое приложение уже отключило системную библиотеку DLL, ваше приложение может просто ссылаться на нее.
  2. Это позволяет обновлениям вашего приложения быть меньше, так как DLL-библиотеки фреймворка не будут меняться между версиями XAP.
...