Каков наилучший подход к использованию кэша в проекте ASP.NET? - PullRequest
1 голос
/ 12 октября 2011

Я работаю в проекте в ASP.NET.

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

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

Мой вопрос: как лучше всего это сделать?

Есть ли ограничения, если я использую ASP.Net Cache для хранения имени пользователя? Например:

Cache["myCache"] = username;

и удалить элемент из кэша при первой загрузке страницы.

if (!Page.IsPostBack)
{
     Cache.Remove("myCache");
}

Это открыто для любых комментариев. Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 12 октября 2011

Используйте HttpCookie и установите срок действия при необходимости:

Если вы не установите срок действия куки, он будет создан, но он не хранится на жестком диске пользователя. Вместо этого печенье поддерживается как часть информации о сеансе пользователя. Когда пользователь закрывает браузер, куки удаляются.

Обзор файлов cookie ASP.NET

//write
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
//myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);

//read
if (Request.Cookies["UserSettings"] != null)
{
    string userSettings;
    if (Request.Cookies["UserSettings"]["Font"] != null)
    { userSettings = Request.Cookies["UserSettings"]["Font"]; }
}

Как: написать печенье

Как: прочитать файл cookie

2 голосов
/ 12 октября 2011

Вы думали об использовании сессии вместо? Кеш, общий для всех сессий, потребует от вас удалить элемент по окончании сессии. Сеанс не страдает этой проблемой, он выровнен с сеансом каждого пользователя напрямую и автоматически удаляется по окончании сеанса. ПРИМЕЧАНИЕ. Я предполагаю, что вы говорите об отображаемом имени, а не имени пользователя. Это должно быть доступно через HttpContext.User.Identity.Name.

Что касается отображения всплывающего окна, вы можете использовать куки для этого. Иметь некоторый javascript, который запускается на странице, которая проверяет наличие cookie, отображает всплывающее окно, если его там нет, а затем устанавливает cookie (как cookie сеанса), чтобы всплывающее окно больше не отображалось. Также можно использовать cookie-файл (не cookie-файл сеанса), если вы хотите, чтобы всплывающее окно показывало только, когда кто-то входит в систему, или только периодически при входе в систему и т. Д.

1 голос
/ 12 октября 2011

Я бы не использовал для этого кеширование.Скорее, ASP.NET поддерживает членство и роли.Я бы использовал это для управления вашим членством, если вы не хотите использовать решение для файлов cookie, указанное выше.Что касается всплывающей страницы, если это только для одной страницы, вы можете использовать куки или настройки в профиле пользователя.

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