6

Вопрос по caching, proxy, xap, silverlight – Предотвращение кэширования Silverlight от кеширования прокси-сервером

У компании, в которой я работаю, есть прокси-серверы / WAN-ускорители между нашими международными сайтами для кэширования веб-содержимого в интрасети. У меня есть приложение Silverlight, размещенное на сервере в одном месте, но доступ к которому получают клиенты в другом месте. Когда пользователи получают доступ к веб-странице, на которой размещено приложение Silverlight, они получают устаревший xap-файл, который кэшируется прокси-сервером, а не последнюю версию с сервера. Локальные пользователи всегда получают последнюю версию xap, поскольку их запросы не проходят через прокси.

Я попробовал различные методы заголовка / метаданных, упомянутые в другом месте, чтобы предотвратить кэширование, и сама содержащая веб-страница обновляется, но я все еще получаю старый файл .xap. Если не считать, что наш ИТ-администратор отключил кэширование прокси для моего сайта, могу ли я что-нибудь сделать, чтобы последний файл xap был получен с сервера, а не через прокси? Содержащая страница - ASP.NET.

2 ответа
4

Я просто добавляю строку запроса в конце пути к файлу xap. Затем

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

Таким образом, в принципе, при встраивании .xap в обычный HTML-файл вы должны сделать следующее:

<param name="source" value="ClientBin/SilverlightApplication1.xap?cachepreventer=whatevervalue"/>

И затем, когда вы развернете новую версию, просто измените «whatvalue» на что-то другое.

РЕДАКТИРОВАТЬ
Если вам нужно использовать эту технику во многих местах вашего приложения, я бы прочитал значение строки запроса из конфигурации и просто записал его на страницу, используя asp.net. Таким образом, вам нужно только обновить его в одном месте при развертывании.

Отлично! Это помогло, спасибо.

от Tim Trout

В моем SL-решении любое значение - это временная метка (номер тика) файла XAP на диске. Я реализовал небольшой помощник ASP.NET, который добавляет метку времени в качестве запроса к имени файла. Таким образом, это полностью автоматически, и вам не нужно ничего обновлять где-либо - просто поместите XAP в ClientBin, и он автоматически обновляется, когда пользователь пытается получить его. Затем в ASPX у меня есть что-то вроде: <param name = "source" value = "<% = Helper.AppendTimestamp (" ClientBin / SilverlightApp.xap ")%>" />

от Srdjan Jovcic

Это действительно умно. Я мог бы решить перейти на эту технику.

от Henrik Söderlund
2

Если вы хотите убедиться,

каждый раз xap-файл получен, и вам не нужно об этом беспокоиться - просто используйте <param name = "source" value = "ClientBin / YourSilverlightapp.xap? <% = Guid.NewGuid (). ToString ()%>" / >

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

Похожие вопросы