Hallo zusammen,
ich bin gerade dabei eine relativ komplxe ASP-NET 2.0 Anwendungung mit VS2005 zu schreiben.
Die Daten kommen aus einer Oracle Datenbank. Es sind recht viele Daten und auch sehr komplexe
Abfragen, die teilweise über 4 oder mehr Tabellen gehen. Ich nutze nicht die typische Art der Datenselektion,
die mir das VS2005 bietet, sondern filter meine Daten über den DataReader.
Da eine Page Zustandlos ist, muss ich natürlich jedesmal einen CONNECT, Daten lesen und eine
DISCONNECT durchführen. Nebenbei schreiben ich bei Fehler noch eine LOG Datei. Die Seite ist auch mehrsrachig,
wobei auch hier die ganzen Texte aus der Datenbank gelesen werden.
Jetzt habe ich das Problem, dass das Laden einiger Seiten sehr langsam geht. Das wäre nicht so schlimm, aber ...
Mal lässt sich eine Seite mit großen und komplexen SELECT Statement schnell laden, mal langsam.
Außerdem muss ich bei einem POSTBACK (z.B. click auf einen BUtton meine Daten neu laden (incl.
CONNECT, Daten lesen, DISCONNECT usw.).
Jetzt meine Frage kann man gezielt den POSTBACK in der Seite selber steuern und wie kann ich das Lesen der
Daten aus der Datenbank effizienter steuern, damit die Seiten schneller laden.
hier zum Beispiel mal eine Seite von mir:
Die POSTBACK Abfrage sieht ziemlich komisch aus, aber bis jetzt habe ich keine andere Möglichkeit
gefunden. Auch wenn ich auf eine Button drück rufe ich die Funktion "PreparePostbacks();" auf.
Als bitte nicht lachen, aber irgenwie raffe ich das mit dem "Zustandslos" nicht richtig.
Wer kann mir helfen !!!
<pre>
public _Default()
{
Load += new EventHandler(Page_Load);
Unload += new EventHandler(Page_Unload);
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
fGlobal = new pa775.ClassLibrary.pcc.TGlobal(Request, Server, "./../config/pcc.xml");
this.Title = fGlobal.ApplicationTitle;
}
catch (Exception aExp)
{
SetMessage(aExp.Message.Trim());
if (fGlobal != null) { fGlobal.Dispose(); fGlobal = null; }
}
if (fGlobal != null)
{
ReadSessionValues();
ReadRequestValues();
if (fGlobal.CheckSession(GetRequestValue("SID"),
GetRequestValue("UID"), GetRequestValue("MID"), IsPostBack))
{
fGlobal.Language = GetSessionValue("LANGID");
SetFrontend(sender, e);
if (!IsPostBack)
{
PreparePostbacks();
}
else
{
PreparePostbacks();
}
}
else
{
MakeRedirect(fGlobal.RedirectPath + "?sid=" +
GetRequestValue("SID") + "&uid=" +
GetRequestValue("UID") + "&lid=" +
GetRequestValue("LID") + "&mid=" +
GetRequestValue("MID"));
}
}
}
protected void Page_Unload(object sender, EventArgs e)
{
if (fGlobal != null) { fGlobal.Dispose(); fGlobal = null; }
if (fLanguages != null) { fLanguages.Clear(); fLanguages = null; }
if (fRequestValues != null) { fRequestValues.Clear(); fRequestValues = null; }
if (fSessionValues != null) { fSessionValues.Clear(); fSessionValues = null; }
}
</pre
Gruß
Sascha
ich bin gerade dabei eine relativ komplxe ASP-NET 2.0 Anwendungung mit VS2005 zu schreiben.
Die Daten kommen aus einer Oracle Datenbank. Es sind recht viele Daten und auch sehr komplexe
Abfragen, die teilweise über 4 oder mehr Tabellen gehen. Ich nutze nicht die typische Art der Datenselektion,
die mir das VS2005 bietet, sondern filter meine Daten über den DataReader.
Da eine Page Zustandlos ist, muss ich natürlich jedesmal einen CONNECT, Daten lesen und eine
DISCONNECT durchführen. Nebenbei schreiben ich bei Fehler noch eine LOG Datei. Die Seite ist auch mehrsrachig,
wobei auch hier die ganzen Texte aus der Datenbank gelesen werden.
Jetzt habe ich das Problem, dass das Laden einiger Seiten sehr langsam geht. Das wäre nicht so schlimm, aber ...
Mal lässt sich eine Seite mit großen und komplexen SELECT Statement schnell laden, mal langsam.
Außerdem muss ich bei einem POSTBACK (z.B. click auf einen BUtton meine Daten neu laden (incl.
CONNECT, Daten lesen, DISCONNECT usw.).
Jetzt meine Frage kann man gezielt den POSTBACK in der Seite selber steuern und wie kann ich das Lesen der
Daten aus der Datenbank effizienter steuern, damit die Seiten schneller laden.
hier zum Beispiel mal eine Seite von mir:
Die POSTBACK Abfrage sieht ziemlich komisch aus, aber bis jetzt habe ich keine andere Möglichkeit
gefunden. Auch wenn ich auf eine Button drück rufe ich die Funktion "PreparePostbacks();" auf.
Als bitte nicht lachen, aber irgenwie raffe ich das mit dem "Zustandslos" nicht richtig.
Wer kann mir helfen !!!
<pre>
public _Default()
{
Load += new EventHandler(Page_Load);
Unload += new EventHandler(Page_Unload);
}
protected void Page_Load(object sender, EventArgs e)
{
try
{
fGlobal = new pa775.ClassLibrary.pcc.TGlobal(Request, Server, "./../config/pcc.xml");
this.Title = fGlobal.ApplicationTitle;
}
catch (Exception aExp)
{
SetMessage(aExp.Message.Trim());
if (fGlobal != null) { fGlobal.Dispose(); fGlobal = null; }
}
if (fGlobal != null)
{
ReadSessionValues();
ReadRequestValues();
if (fGlobal.CheckSession(GetRequestValue("SID"),
GetRequestValue("UID"), GetRequestValue("MID"), IsPostBack))
{
fGlobal.Language = GetSessionValue("LANGID");
SetFrontend(sender, e);
if (!IsPostBack)
{
PreparePostbacks();
}
else
{
PreparePostbacks();
}
}
else
{
MakeRedirect(fGlobal.RedirectPath + "?sid=" +
GetRequestValue("SID") + "&uid=" +
GetRequestValue("UID") + "&lid=" +
GetRequestValue("LID") + "&mid=" +
GetRequestValue("MID"));
}
}
}
protected void Page_Unload(object sender, EventArgs e)
{
if (fGlobal != null) { fGlobal.Dispose(); fGlobal = null; }
if (fLanguages != null) { fLanguages.Clear(); fLanguages = null; }
if (fRequestValues != null) { fRequestValues.Clear(); fRequestValues = null; }
if (fSessionValues != null) { fSessionValues.Clear(); fSessionValues = null; }
}
</pre
Gruß
Sascha
Comment