Я создаю приложение ASP.NET Core MVC. Я хотел бы обрабатывать кеширование и сжатие по-своему. Прежде всего, я хотел бы использовать свою собственную реализацию кеша (в отличие от собственного кеша MS или кеша Redis) и вручную генерировать ключи кеша на основе запроса. Во-вторых, я хотел бы кэшировать сжатые ответы. То есть мне бы хотелось, чтобы логика в моем приложении работала примерно следующим образом:
Получить запрос
Обработка авторизации/аутентификации
Создание объекта POCO, представляющего запрос
Создайте собственный ключ кэша на основе этого объекта, а также ETag, предоставленного браузером
Есть ли у нас уже кэшированный сжатый ответ для этого ключа кэша, использующий формат сжатия, запрошенный браузером пользователя? Если да, верните его в качестве ответа, и все готово.
В противном случае вызовите контроллер MVC как обычно
Обработка ошибок
Возьмите объект результата, возвращенный контроллером, сериализовать его в JSON
Создать полный сжатый ответ на основе этих данных, включая заголовок ETag
Кэшируйте его и верните пользователю; двоичный поток, возвращаемый браузеру, идентичен тому, который мы получили бы при попадании в кэш на шаге (5)
Похоже, я смогу сделать это с помощью кэширования вывода: https://learn.microsoft.com/en-us/aspnet/core/ Performance/caching /output?view=aspnetcore-8.0
К сожалению, я просто не могу придумать правильный способ подключения моего кода к конвейеру — и кажется, что он должен быть, но что бы я ни пытался, я сталкиваюсь с проблемами либо с одной стороны, либо с другой...
Я создаю приложение ASP.NET Core MVC. Я хотел бы обрабатывать кеширование и сжатие по-своему. Прежде всего, я хотел бы использовать свою собственную реализацию кеша (в отличие от собственного кеша MS или кеша Redis) и вручную генерировать ключи кеша на основе запроса. Во-вторых, я хотел бы кэшировать сжатые ответы. То есть мне бы хотелось, чтобы логика в моем приложении работала примерно следующим образом: [list] [*]Получить запрос
[*]Обработка авторизации/аутентификации
[*]Создание объекта POCO, представляющего запрос
[*]Создайте собственный ключ кэша на основе этого объекта, а также ETag, предоставленного браузером
Есть ли у нас уже кэшированный сжатый ответ для этого ключа кэша, использующий формат сжатия, запрошенный браузером пользователя? Если да, верните его в качестве ответа, и все готово.
[*]В противном случае вызовите контроллер MVC как обычно
[*]Обработка ошибок
[*]Возьмите объект результата, возвращенный контроллером, сериализовать его в JSON
[*]Создать полный сжатый ответ на основе этих данных, включая заголовок ETag
[*]Кэшируйте его и верните пользователю; двоичный поток, возвращаемый браузеру, идентичен тому, который мы получили бы при попадании в кэш на шаге (5)
[/list] Похоже, я смогу сделать это с помощью кэширования вывода: https://learn.microsoft.com/en-us/aspnet/core/ Performance/caching /output?view=aspnetcore-8.0 К сожалению, я просто не могу придумать правильный способ подключения моего кода к конвейеру — и кажется, что он должен быть, но что бы я ни пытался, я сталкиваюсь с проблемами либо с одной стороны, либо с другой...