2009-11-22 2 views
9

Я предполагаю, что проблема связана с кешированием. Изменения кода, которые я делаю, не получают, когда я отлаживаю. В большинстве случаев я получаю предыдущую версию приложения. Как я могу предотвратить это?Предотвращение кэширования Silverlight 3 при отладке

+0

Как вы отлаживаете, работаете в Visual Studio? У вас есть тестовый веб-сайт в решении? В каком браузере вы размещаете SL? – AnthonyWJones

+1

Привет, это микрофон? ... У вас есть 4 upvotes по этому вопросу, но вы не ответили на мои вопросы выше и не ответили ни на одного из тех, кто потратил время, чтобы попытаться ответить на ваш вопрос. – AnthonyWJones

ответ

0

Насколько я понимаю, это похоже на проблему с Firefox - когда я использовал IE8, этого не случилось со мной (я понимаю, что это может открыть собственную банку червей, но, по крайней мере, для отладки и тестирования Silverlight, IE намного лучше)

0

У меня не было никаких проблем с получением кэширования Silverlight, вы можете попробовать отладить HTTP-запросы, которые идут туда и обратно, чтобы увидеть, может ли ваш сервер вместо этого возвращать неверную информацию браузера (например, «не измененный» ответ).

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

Для IE это единственный надежный вариант - в противном случае, даже если правильные заголовки без кеша отправляются, некоторые вещи все еще кэшируются (в частности, динамически загружаемые ресурсы, к которым обращаются через Javascript XmlHttpRequest). У меня не было особых проблем с получением Silverlight при кэшировании, если это не так, но IE всегда загружал последние обновления, даже если кеш включен.

Firefox был гораздо более проблематичным - даже при отключении кеша он по-прежнему иногда кэширует ресурсы, загруженные XmlHttpRequest. Обновление вручную несколько раз было единственным решением в этом случае. Еще раз, у меня не было проблем с сборками Silverlight, даже если кеш включен.

0

В Firefox я использую плагин «веб-разработчика» и просто выбираю «отключить кеш». Работает отлично.

+0

Я не могу сказать это каждому пользователю моего сайта, поэтому у меня есть лучшее решение для всех. –

+0

Это только для отладки. Вам не нужно указывать каждому пользователю вашего сайта, он также нарушает реализацию кэша для остальных ваших пользователей. – ChadT

+0

Ну, мы не хотим кэшировать старую версию, когда выпускаем новую версию, нет вопроса о ее нарушении. –

2

Попробуйте добавить к странице, которая содержит Silverlight приложения на Page_Load:

 Response.Cache.SetExpires(DateTime.Now.AddSeconds(-100)); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
2

Ctrl + F5 представляет собой простой способ обновить страницу и очистить кеш этой страницы в то же время - это может помочь :)

0

В Firefox 3.5 в разделе «Инструменты» есть опция «Частный просмотр». Нажмите, чтобы отключить кеширование.

1

Добавляет «версию» строку запрос на ваш XAP Url, что-то вроде:

http://localhost:1234/ClientBin/my_silverlight_app.xap?v=1.0.287.5361 

Это будет обмануть браузер (и многие веб-сервера), чтобы думать, что это другой файл. И когда проблема с кэшем появляется снова, увеличьте число.

Если вы хотите использовать надлежащее кэширование, сделайте это на стороне сервера с помощью инструкций OutputCache.

0

Вот как я это сделал для flex/flash и silverlight, и он работает.

Код За ASPX или CSHTML

string slUrl = "/ClientBin/MySilverlight.xap"; 

string filePath = Server.MapPath(slUrl); 

FileInfo info = new FileInfo(filePath); 

// this will force browser to 
// re download file if file was 
// updated 
slUrl += "?t=" + info.FileWriteTime.Ticks; 

ASPX или CSHTML

<embed .... 
    src="<%= slUrl %>" 
    .. 
/> 

Trick это вы должны изменить URL, добавляя что-то после того, как ? и сделать новую произвольную случайную строку запроса или использовать время записи файла, а для браузера something?t=1 и something?t=2 - два URL-адреса, и он не будет записывать кеш, если t изменения.

Вместо времени записи вы также можете выбрать любое стандартное значение конфигурации, или вы даже можете просто скопировать свой ASPX или HTML и добавить что-то после ?, что заставит браузеры снова загружать xlight файл silverlight.

<embed .... 
    src="/ClientBin/MySilverlight.xap?something-different-each-time" 
    ... 
    /> 
Смежные вопросы