ASP NET Core - очистить ResponseCache программно - PullRequest
0 голосов
/ 10 января 2020

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

 [Route("SomeData")]
        [ResponseCache(Duration = 1000 * 60 * 60)]
        public IActionResult SomeData()
        {
            //returns a partial view for my ajax call
        }

Данные не часто меняются, но пользователь может что-то сделать и знает , что это должно привести к изменению в этом частичном представлении, т.е. должны появиться новые пункты меню.

Однако при кэшированном ответе данные не загружаются из БД. Я хотел бы добавить кнопку «refre sh» на странице, чтобы пользователь мог явно очистить весь кэш.

Я пытался javascript сделать window.reload(true);, а также этот ответ { ссылка }, но в обоих случаях это не работает.

Мне нужно поведение, идентичное нажатию кнопки Ctrl + Refre sh в Chrome.

Cheers

1 Ответ

1 голос
/ 13 января 2020

Это кэшируется на клиенте через заголовки в ответе, что вы не можете «очистить» его. В качестве обходного пути вы можете сначала установить подходящий максимальный возраст кэша ответов на стороне клиента, а затем использовать VaryByHeader или VaryByQueryKeys, каждый раз, когда вы хотите обновить sh кэш, вы должны указать другое значение для заголовка. / строка запроса:

https://docs.microsoft.com/en-us/aspnet/core/performance/caching/middleware?view=aspnetcore-3.1

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