2016-12-25 3 views
1

Я искал реализацию кэширования в своем приложении UWP, но я не смог найти System.Runtime.Caching, я посмотрел на msdn https://msdn.microsoft.com/en-us/library/mt185505.aspx не смог найти эту ссылку. Поддерживается ли это в UWP? если нет, то какая альтернатива? Я просмотрел другие подобные вопросы в stackoverflow, но не смог найти никакого жизнеспособного ответа на No System.Runtime.Caching available?Отсутствие system.runtime.caching в UWP

+0

не Microsoct.Extensions.MemoryCache работает на UWP? Вы также можете использовать CacheManager, который должен работать, сборка в кеше словаря basec или использование Microsoft Extensions должно полностью работать. Я думаю, – MichaC

+0

Я не могу ссылаться на Microsoft.Extensions.Caching.Memory.dll в моем проекте UWP. Я могу использовать словарь, но мне нужно выпустить некоторую пару ключевых значений, например. общий доступ signatutre, который когда-нибудь станет недействительным. – Anu

+0

Не понимаю, что вы имеете в виду, но вы можете просто добавить пакеты nuget в свой проект UWP, я только что создал пустой файл и добавил CacheManager.Microsoft.Extensions.Caching.Memory и использовал его. Работает полностью нормально – MichaC

ответ

2

System.Runtime.Caching недоступен в текущей версии UWP SDK. В зависимости от того, какого типа кэширования вам нужно, есть несколько вариантов: кэширование

UI:

  • Page.NavigationCacheMode: запоминает рендеринг страницы на backstack (включая прокрутку позиции, данные на экране, ...).
  • UIElement.CacheMode: отображение содержимого UIElement в виде растрового изображения (в основном для сложных визуализаций).

кэширование данных 'Real', используя 3-библиотеками, как:

  • Akavache: асинхронное хранилище ключ-значение, основанную на SQLite, с правилами годности.
  • Сохраните данные в формате JSON/XML на диск самостоятельно.

Обновление на комментарий:

Вы можете очистить NavigationCacheMode, установив его в Disabled. Обратите внимание, что вы не можете передать параметр в GoBack(), чтобы сообщить своей предыдущей странице об очистке кеша. Поэтому вам придется добавить какой-то обмен сообщениями событий (например, Prism EventAggregator) или глобальную переменную, чтобы отслеживать это.

Если вы хотите программно изменить значение NavigationCacheMode на Enabled или Required, вы можете установить эти значения только в конструкторе для страницы.

Если изменить значение NavigationCacheMode от Required или Enabled к Disabled, страница удаляются из кэша.

Но поскольку вы говорите о данных JSON из веб-звонка, я бы пошел на Akavache.

+0

Спасибо за информацию Bart. – Anu

+0

Мне нужно сохранить данные Json, которые были возвращены моим веб-приложением. Я попробовал page.NavigationCacheMode, есть ли способ очистить кеш страницы, например.экран 2 изменяет некоторые данные, которые необходимо обновить до предыдущего экрана, я не смог найти какой-либо документ/пример того же – Anu

+0

Обновленный ответ. Но поскольку вы говорите о том, чтобы получить json из Интернета, посмотрите на Akavache .. по-моему, это гораздо лучшее решение. – Bart

Смежные вопросы