ASP.NET Core ResponseCacheAttribute - VaryByCustom? - PullRequest
0 голосов
/ 18 сентября 2018

Я впервые использовал Microsoft.AspNetCore.Mvc.ResponseCacheAttribute и столкнулся с проблемой, которую я бы решил ранее, используя свойство VaryByCustom в OutputCache в ASP.NET (и используя public override string GetVaryByCustomString(HttpContext context, string s) в глобальном.asax).

Такое кэширование VaryByCustom больше не существует в ASP.NET Core.Есть ли встроенная альтернатива, которую я здесь упускаю, или мне нужно будет реализовать ее самостоятельно, чтобы добиться чего-то подобного?

1 Ответ

0 голосов
/ 19 сентября 2018

Насколько я понимаю, у вас есть две гибкие опции в ядре ASP.NET:

  1. Используйте VaryByHeader или VaryByQueryKeys, если вы используете ResponseCacheAttribute.

При использовании заголовков вам нужно записать значение, которое будет меняться в качестве заголовка, которое может быть любым произвольным значением (не нужно предоставлять данные клиенту):

Response.Headers.Add("X-My-Vary-Header", "this-is-variable");

По сути, это все, что VaryByCustomString когда-либо делал для вас.На мой взгляд, вам больше не нужно помещать этот код в определенный метод / файл (например, global.asax).

Попробуйте <cache> Tag Helper при кэшировании в Razor.

Здесь у вас есть широкий диапазон вещей, которые можно «варьировать» на: vary-by-header, vary-by-route, vary-by-user,и даже кастом vary-by.

Посмотрите здесь и решите, использовать ли атрибут или вспомогательный тег кеша: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/cache-tag-helper

...