Итак, у меня есть веб-приложение, которое обрабатывает множество запросов на сервер для данных. Требование к проекту должно иметь очень быстрое время отклика сервера. Сервер размещен на платформе, основанной на облаке.
Приложение использует сеансы для отслеживания аутентификации пользователей после их входа в систему. Поскольку он размещен у провайдера облачных вычислений, я использую кэш для резервного хранилища сеансов (в моем случае это кеш Auzre, но если вы "не знакомы с тем, что думают о Redis)
Текущий поток выглядит так:
- Пользователь обращается к ресурсу
- Попытка получить сеанс на основе идентификатора сеанса через кеш. Это запрос кэша.
- Пользователь аутентифицируется через состояние сеанса (при входе в систему).
- Запрос данных отправляется, как правило, через кеш.
- Данные возвращаются пользователю.
Проблема с этим подходом заключается в том, что он дважды ударяет по кешу. Удаление сеанса в целом вызвало значительное улучшение скорости (около 50%).
Я подумывал о том, чтобы один раз ударить кеш, попросив как ключ, который мне нужен для пользователя, так и SessionID, чтобы сохранить дополнительную поездку туда и обратно. Тем не менее, я никогда не видел этот подход раньше, и он требует "переноса моей собственной сессии", поскольку мне придется генерировать идентификаторы сеансов и т.д. Я чувствую, что может быть проще и проще.
Итак, что было бы самым эффективным способом обслуживания пользователя ресурсом и проверки подлинности?
Примечание: Я использую ASP.NET MVC/WebAPI с С#, но я не считаю это очень релевантным для вопроса, поэтому я не могу оставить язык и платформу из-за он.