Как настроить кеширование Silverlight xap для одинаковой работы во всех браузерах - PullRequest
1 голос
/ 20 декабря 2010

Основные требования

У меня есть приложение SL, которое можно запустить в браузере или вне браузера. Я хочу, чтобы браузер:

  • Кэшировать файл xap
  • Загрузите xap из кеша, если он не изменился, или повторно загрузите его, если он изменился.

Подробнее

Установка будущего заголовка expires, очевидно, решает проблему кэширования, но тогда я не могу заставить пользователя загрузить последнюю версию. Обычно я просто добавляю строку запроса к URL-адресу (например, url?v=1), но я не могу этого сделать, поскольку это нарушает функциональность вне браузера. например, приложение считает, что оно не установлено, хотя на самом деле оно установлено.

без кеша

Если я установлю Cache-Control на no-cache, Chrome и Firefox правильно отправят запрос на сервер для xap, но используют кеш, если возвращается 304. IE8 просто загружает файл снова, как и Safari.

должн REVALIDATE

Установка Cache-Control на must-revalidate снова работает правильно в Chrome и Firefox, но Safari всегда загружает xap снова, в то время как IE8 всегда использует кеш.

Как мне настроить это на работу, как описано в начале этого вопроса?

1 Ответ

1 голос
/ 21 декабря 2010

Я не уверен, что Chrome / Firefox строго «правильный», вы ведь не сказали браузеру, что он должен кэшировать контент или даже что контент кэшируется.

Вместо «без кэширования» попробуйте «Cache-Control: max-age = 15». Посмотрите, убеждает ли это IE в том, что он должен кэшировать контент, несмотря на его большой размер (именно поэтому он не кэширует его изначально).

Для установки OOB используйте метод CheckAndDownloadUpdateAsync объекта Application. Обратите внимание, что вам нужно сообщить пользователю, чтобы перезапустить приложение после загрузки обновления.

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