Является ли кэширование в ASP.NET общим для пользователей или определенным для отдельного человека? - PullRequest
4 голосов
/ 11 февраля 2010

У меня быстрый вопрос, в котором я просто не уверен. Я пытаюсь повысить производительность на сайте в интрасети. Я пытаюсь ограничить поездки в базу данных путем реализации некоторого кэширования. Я новичок в кэшировании, и я не был уверен, что это разделено между пользователями? Я надеюсь, что это уникально для отдельного пользователя. Как у каждого пользователя будет свой собственный независимый кеш, такой же, как у объекта сессии. Я пытаюсь что-то вроде этого

   if (Cache["_InfoResult"] == null)
        {
            Cache["_InfoResult"] = db.GetInfoResultBySessionGuid(SessionGuid);
        }

        _InfoResult = (InfoResult)Cache["_InfoResult"];

, а затем с помощью объекта _InfoResult для управления областями страницы. Меня беспокоило то, что я хочу, чтобы Cache ["_ InfoResult"] был уникальным для каждого пользователя. Это правильно или этот объект будет одинаковым для каждого пользователя? Спасибо за разъяснение.

Cheers, ~ ck в Сан-Диего

Ответы [ 2 ]

12 голосов
/ 11 февраля 2010

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

Если вы хотите что-то кэшировать для отдельного пользователя, используйте объект Session .

3 голосов
/ 11 февраля 2010

Кэш имеет глобальную область действия и сохраняется в течение всего срока службы вашего веб-приложения. Это не для httprequest.

Вы можете проверить это с помощью простого кода.

<asp:TextBox ID="txtData" runat="server" Width="200px"></asp:TextBox>
<br />
<asp:Button ID="btnPutToCache" runat="server" Text="Put to Cache" onclick="btnPutToCache_Click" />
<br />
<asp:Button ID="btnGetFromCache" runat="server" text="Get from Cache" onclick="btnGetFromCache_Click" />
<br />
<asp:Label id="lblGetFromCache" runat="server"></asp:Label>

И код позади:

protected void btnPutToCache_Click(object sender, EventArgs e) {
        Cache["data"] = txtData.Text;
    }
    protected void btnGetFromCache_Click(object sender, EventArgs e) {
        lblGetFromCache.Text = Cache["data"].ToString();
    }

Поместите весь приведенный выше код на одной странице. Разверните свой сайт. Нажмите на страницу из экземпляра окна браузера, вставьте тестовый текст в текстовое поле и нажмите кнопку «Поместить в кэш».

Откройте новое окно браузера и нажмите на страницу. Нажмите кнопку «Получить из кэша» и просмотрите результаты.

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