VaryByQueryKeys не работает с параметрами

Мое приложение asp.net core mvc не всегда перезапускает контроллер, когда я меняю значение своего параметра. Он просто возвращает предыдущий кеш. Я думал, что VaryByQueryKeys предназначен для решения этой проблемы.

[ResponseCache(Duration = 3600, VaryByQueryKeys = new string[] { "widthHeight" }, Location = ResponseCacheLocation.Any)]
        [Route("/{widthHeight}")]
        public IActionResult Index(string widthHeight)
        {

2 ответа

Решение

Насколько мне известно, если вы используете Chrome, вводя URL-адрес (например, http://www.example.com/abcd/index.html) непосредственно в адресную строку или используя F5 для обновления страницы, Chrome всегда будет отправлять Cache-Control: max-age=0 заголовок.

Это причина, по которой ваш кеш ответов не работает.

Чтобы решить эту проблему, вы должны использовать другой браузер для тестирования, например IE11, или вы можете установить гиперссылку в своем приложении, как показано ниже:

       <a href="https://localhost:44374/?widthHeight=aaaa">aaa</a>

Если вы щелкните эту гиперссылку, вы обнаружите, что кеш будет работать.

Результат:

Я столкнулся с той же проблемой, ни одно из следующих действий не дает ожидаемых значений, кэшированных уникальными параметрами:

VaryByQueryKeys = new[] { "*" }

VaryByQueryKeys = new[] { "searchparam" }

данныйpublic async Task<IActionResult> Search([FromQuery] string searchparam)

Решение ставится перед ним с$, то естьVaryByQueryKeys = new[] { "$searchparam" }

Другие вопросы по тегам