Какой метод кэширования ASP.NET следует использовать для кэширования результатов запроса представления? - PullRequest
0 голосов
/ 14 декабря 2011

Сценарий - это страница ASPX с GridView, отображающим данные из SqlDataSource, настроенного для выбора строк в представлении базы данных, основанном на неоптимальном запросе (который у меня нет времени на исправление в текущий момент).

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

Кроме того, GridView имеет сортируемые столбцы и содержится в панели обновления.

Заранее спасибо.

1 Ответ

3 голосов
/ 14 декабря 2011

Это не обязательно должно быть сложно, это может быть так просто:

public DataSet GetMyViewData()
{
    var results = HttpContext.Current.Cache["myViewResults"] as DataSet;

    if(results == null)
    {
        results = GetMyQueryResults();
        HttpContext.Current.Cache["myViewResults"] = results;
    }

    return results;
}

Конечно, это зависит от того, насколько большими являются данные, насколько свежими они вам нужны, и т. Д.и т. д. и т. д., но добавить и извлечь из кеша это просто.

Кроме того, если вы говорите о WebForms, элемент управления SqlDataSource предоставляет политики EnableCaching и CacheDuration если вам нужно только кэшировать результаты оператора Select.Все, что вам нужно сделать, это установить свойства элемента управления, как показано ниже.

Из MSDN:

<asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                DataSourceMode="DataSet"
                ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
                EnableCaching="True"
                CacheDuration="20"
                SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees">
            </asp:SqlDataSource>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...