У меня есть пользовательский веб-элемент управления, он обслуживает некоторые потенциально интенсивные вычисления данных, и я хотел бы, чтобы он выводился в кэш-память, чтобы при каждом просмотре страницы данные не пересчитывались.Он находится на очень часто просматриваемых страницах, поэтому очень важно, чтобы он работал правильно!
Для контекста он используется в нашей аркаде: http://www.scirra.com/arcade/action/93/8-bits-runner
Нажмите на статистику, данныеграфы и статистика генерируются из этого webusercontrol.
Запуск элемента управления выглядит следующим образом:
public partial class Controls_Arcade_Data_ArcadeChartData : System.Web.UI.UserControl
{
public int GameID { get; set; }
public Arcade.ChartDataType.ChartType Type { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
Теперь сложность, с которой я столкнулся, заключается в том, что кэш вывода должен зависетькак для GamID, так и для ChartType.
Этот элемент управления повторно используется со многими различными комбинациями GameID и Types, мне нужно создать кеш для каждого из них, но я пытаюсь выяснить, как это сделать..
Например, одна аркадная игра может пройти в GameID = 93
и Type = GraphData
, другая может быть GameID = 41
и Type = TotalPlaysData
, а другая может быть GameID = 93
, но Type = TotalPlaysData
.Все они должны возвращать разные данные и иметь разные выходные кэши.
Элемент управления используется на странице игр примерно так (параметры фактически заданы в коде)
<div>Total Plays:</div>
<div class="count"><Scirra:ArcadeChartData runat="server" GameID="93" Type="TotalPlays" /></div>
<br /><br />
<div>Total Guest Plays:</div>
<div class="count"><Scirra:ArcadeChartData runat="server" GameID="93" Type="TotalGuestPlays" /></div>
etc.
Любойпомощь оценена!Я потратил некоторое время на поиск в сети, и он продолжает выдвигаться как то, что мне нужно решить, но я не могу понять это.
Редактировать
Редактировать: IЯ пытался добавить эту строку в мой элемент управления: <% @ OutputCache Duration = "20" VaryByControl = "GameID; Тип"%>
Но он просто выдает ошибку Object reference not set to an instance of an object.
в строке, где GameID
устанавливается впервые на странице ASPX с помощью элемента управления.