0

ボタンがクリックされると、アイテムのコレクションにバインドされたデータであるasp:Repeaterがあります。標準運賃。ただし、リピーターのViewStateを無効にすると、ボタンをクリックしてからリピーターをロードするのにかかる時間が劇的に長くなります。これは明らかに、私が達成しようとしている効果の反対です。劇的に言えば、ViewState が有効な場合は ~10 秒、ViewState が無効な場合は ~35 秒です。

私は途方に暮れています...

注:ボタン クリックのイベント ハンドラーでは、データ ソースもキャッシュしています。ViewStateを有効/無効にするかどうかに関係なく、これを行っています。ViewState が使用されているときにキャッシュが無視される可能性はありますか?

関連するコードは次のとおりです。

<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();
    }
}
4

1 に答える 1

0

結論に飛びつく前に、Firefox 用の Firebug アドオンを入手して、何がそんなに時間がかかるかを確認します。しかし、ボタンをクリックするたびにキャッシュが更新されるため、ボタンクリックでのキャッシュの実際の利益は見られません...ポストバックごとにグリッドビューをキャッシュされたデータセットにバインドする別の方法がない限り。

于 2011-05-09T22:01:17.503 に答える