Как заставить Firefox не кэшировать или повторно загружать XAP-файл Silverlight? - PullRequest
50 голосов
/ 21 ноября 2008

При работе с Silverlight я заметил, что Firefox будет кэшировать файл XAP, поэтому, если я сделаю обновление, пользователь может застрять в устаревшей версии. Есть ли способ заставить браузер перезагружать файл XAP каждый раз, или, возможно, принудительно делать это только после публикации обновления? Или в конфигурации Silverlight есть параметр, запрещающий браузеру полностью кэшировать файл XAP?

Спасибо, Джеф

Ответы [ 17 ]

1 голос
/ 28 мая 2009

Я получаю это на работу с помощью комбинации предложений выше:

  1. Установить атрибуты cache-control / pragma http-эквивалента метатега равными 'No-Cache'
  2. Использование страницы ASP.NET для размещения элемента управления silverlight (в отличие от HTML-страницы)
  3. Установите свойство Source элемента управления ASP.NET Silverlight в коде позади, добавив метку времени к URL-адресу .xap, например

    Silverlight1.Source = "ClientBin / MyApplication.xap?" + DateTime.Now.ToString ("дд-мм-гг-чч: мм: сс");

0 голосов
/ 01 сентября 2011

Я использую это решение

<object id="Xaml1" data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="100%" height="100%">
<%––<param name="source" value="ClientBin/SilverlightApp.xap"/>––%>
<%
string orgSourceValue = @"ClientBin/SilverlightApp.xap";
string param;
if (System.Diagnostics.Debugger.IsAttached)
param = "<param name=\"source\" value=\"" + orgSourceValue + "\" />";
else
{
string xappath = HttpContext.Current.Server.MapPath(@"") + @"\" + orgSourceValue;
DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath);
param = "<param name=\"source\" value=\"" + orgSourceValue + "?ignore="
+ xapCreationDate.ToString() + "\" />";
}
Response.Write(param);
%>
<param name="onError" value="onSilverlightError" 
0 голосов
/ 21 ноября 2008

Мы также находимся в той же ситуации, когда хотим контролировать, когда файл .XAP загружается в браузер.

Подход, на который вы, возможно, захотите взглянуть, заключается в использовании изолированного хранилища Silverlight в качестве «кэша» для хранения файлов .XAP.

Посмотрите этот блог: IsolatedStorage как кеш объекта Silverlight

0 голосов
/ 26 мая 2010

Идея строки запроса не работает для меня в Silverlight 4. Кажется, что сервер кэширует проклятый xap (но не файл aspx). Решение, которое работает в SL4, - это перейти к свойствам вашего проекта Silverlight, перейти к информации о сборке и ввести версию.

0 голосов
/ 22 ноября 2008

Очень простая идея: просто добавьте поддельную строку запроса в URL.

<param name="source" value="app.xap?r12345"/>

Большинство серверов должны игнорировать его, а файл обычно обрабатывать - зависит от вашего сервера. Если вы действительно умны, вы можете сделать страницу хостинга динамической и автоматически добавить строку тикового числа или дату-время в строку запроса. Это гарантирует, что вы получите кеширование, когда захотите, но принудительно загрузите, когда есть изменения.

В идеале, ваш сервер должен сделать это за вас. Но если нет ...

0 голосов
/ 26 ноября 2008

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

0 голосов
/ 23 января 2009

Пока единственное решение, которое я нашел, как только проблема возникла, это очистить кеш Firefox.

Лучшее решение было бы намного лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...