禁用 asp:Repeater 的视图状态会增加加载时间

本文关键字:增加 加载 时间 视图状态 asp Repeater 禁用 | 更新日期: 2023-09-27 17:55:33

我有一个asp:Repeater,一旦单击按钮,它就会将数据绑定到项目集合。标准票价。但是,如果我禁用转发器的视图状态,则单击按钮后加载转发器所需的时间会大大延长。这显然与我试图达到的效果相反。戏剧性地,我的意思是启用视图状态时~10秒,禁用视图状态时~35秒。

我不知所措...

注意:在按钮单击的事件处理程序中,我还缓存了数据源。无论我是否启用/禁用视图状态,我都在这样做。使用视图状态时,是否有可能忽略我的缓存?

以下是相关代码:

<asp:repeater id="niinMatchesTable" runat="server" enableviewstate="false">
<headertemplate>
<table id="niinMatches" class="listing alternate">
  <tr>
    <th>QTY.</th>
    <th><asp:linkbutton runat="server" onclick="sortResultsTable" commandargument="niin-niin" text="NIIN" /></th>
    <th><asp:linkbutton runat="server" onclick="sortResultsTable" commandargument="niin-partnumber" text="PART #" /></th>
    <th>Cases</th>
  </tr>
</headertemplate>
<itemtemplate>
<tr class="odd">
  <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Quantity") %>' /></td>
  <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "NIIN") %>' /></td>
  <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "PartNumber") %>' /></td>
  <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Cases") %>' /></td>
</tr>
</itemtemplate>
<footertemplate>
  </table>
</footertemplate>
</asp:repeater>

protected void uploadClick(object sender, EventArgs e)
{
    if (fileUploader.HasFile)
    {   
        fileUploader.SaveAs(Server.MapPath("~/temp/inventory.xls"));
        var niinMatches = getNiinMatches(); // Populates object by parsing spreadsheet
        var absExp = System.Web.Caching.Cache.NoAbsoluteExpiration;
        var slidingExp = TimeSpan.FromMinutes(10);
        Cache.Insert("_niinMatches", niinMatches, null, absExp, slidingExp);
        niinMatchesTable.DataSource = niinMatches;
        niinMatchesTable.DataBind();
    }
}

禁用 asp:Repeater 的视图状态会增加加载时间

在得出结论之前,我会得到Firefox的Firebug插件,并检查什么需要这么长时间。但是我没有看到单击按钮时缓存的任何实际收益,因为每次单击按钮时,缓存都会更新......除非有其他方法在每次回发时将 gridview 绑定到缓存的数据集。