Выходной кэш клиента служб WCF-RIA - как принудительно обновить кеш

Как упоминалось в другом вопросе , мы используем службы WCF-RIA в нашем проекте в сочетании с навигационной структурой silverlight. Отчасти есть функция поиска. Кнопка поиска переместит на специальную страницу поиска, поместив поисковый запрос в URL-адрес, который затем запустит запрос RIA на сервере.

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

[OutputCache(OutputCacheLocation.Client, duration: 2 * 60)]

Теперь иногда (особенно в демонстрации) наши пользователи знают, что базовый источник данных изменился, и они хотят обновить поиск, чтобы увидеть текущие результаты.

Установка LoadOperations LoadBehavior не обновляла кеш.

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

Теперь возникает вопрос: есть ли лучший способ принудительно обновить кеш клиента ?

Дополнительно: наш обходной путь не работает, если пользователь нажимает кнопку обновления браузера, чтобы обновить страницу поиска. В этом случае счетчик кеша по-прежнему берется из URL-адреса, а данные извлекаются из кеша, а не с сервера. Я не нашел способа обнаружить обновление от нашего клиента silverlight (я видел одно предложение с использованием серверной переменной сеанса, что не подходит, потому что наш сервер полностью не имеет состояния).

6
задан Community 23 May 2017 в 11:51
поделиться