96 messaggi dal 05 maggio 2002
Ciao a tutti!
sto provando a fare una piccola applicazione asp per una intranet locale, finora tutto bene. La cosa che non va è una pagina che ho creato (confesso che uso dreamweaver ULTRADEV, sono alle prime armi!!!), che va a leggere in un DB di access tutti i record che come campo DataRichiamo corrisponde alla data corrente e alla data del giorno successivo. La pagina viene caricata in circa 8-9 secondi (tantissimo!!!!), i dati visualizzati sono corretti! La cosa strana che altre pagine asp hanno delle query molto più complesse, che si caricano in non più di 2 secondi!
Io provo a postarvi il codice che ha generato UD, è un po' lungo, ma spero che qualcuno possa aiutarmi:
vi ringrazio anticipatamente

<code>
&lt;%@LANGUAGE="VBSCRIPT"%&gt;
&lt;!--#include file="Connections/archivio.asp" --&gt;
&lt;%
Session.LCID=1040
%&gt;

&lt;%
MyDate = Date + 1
mm = Month(MyDate)
if mm &lt; 10 then
mm = "0" & mm
end if
dd = Day(MyDate)
if dd &lt; 10 then
dd = "0" & dd
end if
yy = Right(Year(MyDate),4)
session("domani") = dd & "/" & mm & "/" & yy
%&gt;
&lt;%
MyDate = Date
mm = Month(MyDate)
if mm &lt; 10 then
mm = "0" & mm
end if
dd = Day(MyDate)
if dd &lt; 10 then
dd = "0" & dd
end if
yy = Right(Year(MyDate),4)
session("oggi") = dd & "/" & mm & "/" & yy
%&gt;
&lt;%
Dim richiami__data
richiami__data = "%"
if (Session("oggi") &lt;&gt; "") then richiami__data = Session("oggi")
%&gt;
&lt;%
set richiami = Server.CreateObject("ADODB.Recordset")
richiami.ActiveConnection = MM_archivio_STRING
richiami.Source = "SELECT CodiceContatto, COGNOME, RagioneSoc, DataRichiamo FROM Appuntamenti WHERE DataRichiamo LIKE '" + Replace(richiami__data, "'", "''") + "'"
richiami.CursorType = 1
richiami.CursorLocation = 2
richiami.LockType = 3
richiami.Open()
richiami_numRows = 0
%&gt;
&lt;%
Dim domRichiami__data
domRichiami__data = "%"
if (Session("domani") &lt;&gt; "") then domRichiami__data = Session("domani")
%&gt;
&lt;%
set domRichiami = Server.CreateObject("ADODB.Recordset")
domRichiami.ActiveConnection = MM_archivio_STRING
domRichiami.Source = "SELECT CodiceContatto, COGNOME, RagioneSoc, DataRichiamo FROM Appuntamenti WHERE DataRichiamo LIKE '" + Replace(domRichiami__data, "'", "''") + "'"
domRichiami.CursorType = 1
domRichiami.CursorLocation = 2
domRichiami.LockType = 3
domRichiami.Open()
domRichiami_numRows = 0
%&gt;
&lt;%
Dim Repeat1__numRows
Repeat1__numRows = 10
Dim Repeat1__index
Repeat1__index = 0
richiami_numRows = richiami_numRows + Repeat1__numRows
%&gt;
&lt;%
Dim Repeat2__numRows
Repeat2__numRows = 10
Dim Repeat2__index
Repeat2__index = 0
domRichiami_numRows = domRichiami_numRows + Repeat2__numRows
%&gt;
&lt;%
' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

' set the record count
richiami_total = richiami.RecordCount

' set the number of rows displayed on this page
If (richiami_numRows &lt; 0) Then
richiami_numRows = richiami_total
Elseif (richiami_numRows = 0) Then
richiami_numRows = 1
End If

' set the first and last displayed record
richiami_first = 1
richiami_last = richiami_first + richiami_numRows - 1

' if we have the correct record count, check the other stats
If (richiami_total &lt;&gt; -1) Then
If (richiami_first &gt; richiami_total) Then richiami_first = richiami_total
If (richiami_last &gt; richiami_total) Then richiami_last = richiami_total
If (richiami_numRows &gt; richiami_total) Then richiami_numRows = richiami_total
End If
%&gt;
&lt;%
' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

' set the record count
domRichiami_total = domRichiami.RecordCount

' set the number of rows displayed on this page
If (domRichiami_numRows &lt; 0) Then
domRichiami_numRows = domRichiami_total
Elseif (domRichiami_numRows = 0) Then
domRichiami_numRows = 1
End If

' set the first and last displayed record
domRichiami_first = 1
domRichiami_last = domRichiami_first + domRichiami_numRows - 1

' if we have the correct record count, check the other stats
If (domRichiami_total &lt;&gt; -1) Then
If (domRichiami_first &gt; domRichiami_total) Then domRichiami_first = domRichiami_total
If (domRichiami_last &gt; domRichiami_total) Then domRichiami_last = domRichiami_total
If (domRichiami_numRows &gt; domRichiami_total) Then domRichiami_numRows = domRichiami_total
End If
%&gt;
&lt;%
' *** Recordset Stats: if we don't know the record count, manually count them

If (richiami_total = -1) Then

' count the total records by iterating through the recordset
richiami_total=0
While (Not richiami.EOF)
richiami_total = richiami_total + 1
richiami.MoveNext
Wend

' reset the cursor to the beginning
If (richiami.CursorType &gt; 0) Then
richiami.MoveFirst
Else
richiami.Requery
End If

' set the number of rows displayed on this page
If (richiami_numRows &lt; 0 Or richiami_numRows &gt; richiami_total) Then
richiami_numRows = richiami_total
End If

' set the first and last displayed record
richiami_first = 1
richiami_last = richiami_first + richiami_numRows - 1
If (richiami_first &gt; richiami_total) Then richiami_first = richiami_total
If (richiami_last &gt; richiami_total) Then richiami_last = richiami_total

End If
%&gt;
&lt;%
' *** Recordset Stats: if we don't know the record count, manually count them

If (domRichiami_total = -1) Then

' count the total records by iterating through the recordset
domRichiami_total=0
While (Not domRichiami.EOF)
domRichiami_total = domRichiami_total + 1
domRichiami.MoveNext
Wend

' reset the cursor to the beginning
If (domRichiami.CursorType &gt; 0) Then
domRichiami.MoveFirst
Else
domRichiami.Requery
End If

' set the number of rows displayed on this page
If (domRichiami_numRows &lt; 0 Or domRichiami_numRows &gt; domRichiami_total) Then
domRichiami_numRows = domRichiami_total
End If

' set the first and last displayed record
domRichiami_first = 1
domRichiami_last = domRichiami_first + domRichiami_numRows - 1
If (domRichiami_first &gt; domRichiami_total) Then domRichiami_first = domRichiami_total
If (domRichiami_last &gt; domRichiami_total) Then domRichiami_last = domRichiami_total

End If
%&gt;
&lt;%
' *** Move To Record and Go To Record: declare variables

Set MM_rs = domRichiami
MM_rsCount = domRichiami_total
MM_size = domRichiami_numRows
MM_uniqueCol = ""
MM_paramName = ""
MM_offset = 0
MM_atTotal = false
MM_paramIsDefined = false
If (MM_paramName &lt;&gt; "") Then
MM_paramIsDefined = (Request.QueryString(MM_paramName) &lt;&gt; "")
End If
%&gt;
&lt;%
' *** Move To Record: handle 'index' or 'offset' parameter

if (Not MM_paramIsDefined And MM_rsCount &lt;&gt; 0) then

' use index parameter if defined, otherwise use offset parameter
r = Request.QueryString("index")
If r = "" Then r = Request.QueryString("offset")
If r &lt;&gt; "" Then MM_offset = Int(r)

' if we have a record count, check if we are past the end of the recordset
If (MM_rsCount &lt;&gt; -1) Then
If (MM_offset &gt;= MM_rsCount Or MM_offset = -1) Then ' past end or move last
If ((MM_rsCount Mod MM_size) &gt; 0) Then ' last page not a full repeat region
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' move the cursor to the selected record
i = 0
While ((Not MM_rs.EOF) And (i &lt; MM_offset Or MM_offset = -1))
MM_rs.MoveNext
i = i + 1
Wend
If (MM_rs.EOF) Then MM_offset = i ' set MM_offset to the last possible record

End If
%&gt;
&lt;%
' *** Move To Record: if we dont know the record count, check the display range

If (MM_rsCount = -1) Then

' walk to the end of the display range for this page
i = MM_offset
While (Not MM_rs.EOF And (MM_size &lt; 0 Or i &lt; MM_offset + MM_size))
MM_rs.MoveNext
i = i + 1
Wend

' if we walked off the end of the recordset, set MM_rsCount and MM_size
If (MM_rs.EOF) Then
MM_rsCount = i
If (MM_size &lt; 0 Or MM_size &gt; MM_rsCount) Then MM_size = MM_rsCount
End If

' if we walked off the end, set the offset based on page size
If (MM_rs.EOF And Not MM_paramIsDefined) Then
If (MM_offset &gt; MM_rsCount - MM_size Or MM_offset = -1) Then
If ((MM_rsCount Mod MM_size) &gt; 0) Then
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' reset the cursor to the beginning
If (MM_rs.CursorType &gt; 0) Then
MM_rs.MoveFirst
Else
MM_rs.Requery
End If

' move the cursor to the selected record
i = 0
While (Not MM_rs.EOF And i &lt; MM_offset)
MM_rs.MoveNext
i = i + 1
Wend
End If
%&gt;
&lt;%
' *** Move To Record: update recordset stats

' set the first and last displayed record
domRichiami_first = MM_offset + 1
domRichiami_last = MM_offset + MM_size
If (MM_rsCount &lt;&gt; -1) Then
If (domRichiami_first &gt; MM_rsCount) Then domRichiami_first = MM_rsCount
If (domRichiami_last &gt; MM_rsCount) Then domRichiami_last = MM_rsCount
End If

' set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount &lt;&gt; -1 And MM_offset + MM_size &gt;= MM_rsCount)
%&gt;
&lt;%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName &lt;&gt; "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "="
MM_keepURL="":MM_keepForm="":MM_keepBoth="":MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each Item In Request.QueryString
NextItem = "&" & Item & "="
If (InStr(1,MM_removeList,NextItem,1) = 0) Then
MM_keepURL = MM_keepURL & NextItem & Server.URLencode(Request.QueryString(Item))
End If
Next

' add the Form variables to the MM_keepForm string
For Each Item In Request.Form
NextItem = "&" & Item & "="
If (InStr(1,MM_removeList,NextItem,1) = 0) Then
MM_keepForm = MM_keepForm & NextItem & Server.URLencode(Request.Form(Item))
End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
if (MM_keepBoth &lt;&gt; "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
if (MM_keepURL &lt;&gt; "") Then MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
if (MM_keepForm &lt;&gt; "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
If (firstItem &lt;&gt; "") Then
MM_joinChar = "&"
Else
MM_joinChar = ""
End If
End Function
%&gt;
&lt;%
' *** Move To Record: set the strings for the first, last, next, and previous links

MM_keepMove = MM_keepBoth
MM_moveParam = "index"

' if the page has a repeated region, remove 'offset' from the maintained parameters
If (MM_size &gt; 0) Then
MM_moveParam = "offset"
If (MM_keepMove &lt;&gt; "") Then
params = Split(MM_keepMove, "&")
MM_keepMove = ""
For i = 0 To UBound(params)
nextItem = Left(params(i), InStr(params(i),"=") - 1)
If (StrComp(nextItem,MM_moveParam,1) &lt;&gt; 0) Then
MM_keepMove = MM_keepMove & "&" & params(i)
End If
Next
If (MM_keepMove &lt;&gt; "") Then
MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
End If
End If
End If

' set the strings for the move to links
If (MM_keepMove &lt;&gt; "") Then MM_keepMove = MM_keepMove & "&"
urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="
MM_moveFirst = urlStr & "0"
MM_moveLast = urlStr & "-1"
MM_moveNext = urlStr & Cstr(MM_offset + MM_size)
prev = MM_offset - MM_size
If (prev &lt; 0) Then prev = 0
MM_movePrev = urlStr & Cstr(prev)
%&gt;
&lt;html&gt;

'qui c'è il codice html che genera le tabelle dei risultati, non lo inserisco per questioni di spazio
&lt;/html&gt;
&lt;%
richiami.Close()
%&gt;
&lt;%
domRichiami.Close()
%&gt;

</code>



lo scoppato:)

lo scoppato:)
1.818 messaggi dal 21 giugno 2001
Contributi
Il codice è veramente tanto e di non facile lettura.

Quello che ti posso dire è che tutte queste aperture e chiusure dei tag &lt;% e %&gt; rallentano molto.

Poiché da quello che ho visto mi sembra che sia tutto codice ASP quello che hai postato, non c'è bisogno di aprire e chiudere i tag in continuazione: aprilo all'inizio e chiudilo alla fine, cancellando tutti i &lt;%, %&gt; che ci sono nel mezzo. Dovresti notare un aumento di velocità di esecuzione.

Fammi sapere.

Cia Cia
hyppos

www.teatrolabaracca.com

<code>
|--------------------------------------|
|<font color=white><b>in giro torte sol ciclos et rotor igni</b></font id=white>|
|--------------------------------------|
</code>

hyppos
<code> in giro torte sol ciclos et rotor igni</code>
96 messaggi dal 05 maggio 2002
ciao hyppos!
prima di tutto grazie per l'attenzione!
ho provato a eliminare i vari tag &lt;% %&gt;, quindi ho racchiuso tutto all'interno di due soli tag.
niente da fare, la pagina si carica sempre in 8-9 secondi!!!
...voglio aggiungere che le altre pagine che ULTRADEV ha generato sono molto + complesse (query che controllano più campi), ma il loro caricamento è veloce, non + di un secondo!!!
eppure tutte accedono alla stessa tabella del DB!

N.B.: voglio essere sincero, ho postato lo stesso 3d su html.it, ma mi hanno trattato a pesci in faccia!!! ma quanto se la tirano???
io, come tanti, sto' piano piano imparando, nessuno nasce "imparato"!!! Viva ASPitalia!!!!!!

lo scoppato:)

lo scoppato:)
1.818 messaggi dal 21 giugno 2001
Contributi
Ripeto il codice è tanto e di non facile interpretazione.

Da quello che vedo in questa pagina apri due recordset:

richiami e domrichiami

Poiché sono recordset che apri solo per la lattura prova a cambiare il settaggio dei cursori in questo modo

richiami.CursorType = 3
richiami.CursorLocation = 3

domrichiami.CursorType = 3
domrichiami.CursorLocation = 3

in fondo, dove chiudi i recordset, aggiungi

Set richiami=Nothing
Set domrichiami=Nothing

dopo i close

Cia Cia
hyppos

www.teatrolabaracca.com

<code>
|--------------------------------------|
|<font color=white><b>in giro torte sol ciclos et rotor igni</b></font id=white>|
|--------------------------------------|
</code>

hyppos
<code> in giro torte sol ciclos et rotor igni</code>
96 messaggi dal 05 maggio 2002
ho provato, ma la pagina è sempre lenta(:
...puo' centrare qualcosa che la tabella a cui accede la pagina è formata da circa 300.000 record, e il campo DataRichiamo ha solo 10 record con una data, gli altri 299.990 sono vuoti?

lo scoppato:)

lo scoppato:)
1.818 messaggi dal 21 giugno 2001
Contributi
Eccome se c'entra! Una query su 300.000 records! 8-9 secondi mi sembra un tempo egregio!

Se vuoi migliorarlo prova a crearti degli indici nella tabella, magari proprio in base ai campi che usi maggiormente come condizioni nella query.

Cia Cia
hyppos

www.teatrolabaracca.com

<code>
|--------------------------------------|
|<font color=white><b>in giro torte sol ciclos et rotor igni</b></font id=white>|
|--------------------------------------|
</code>

hyppos
<code> in giro torte sol ciclos et rotor igni</code>
55 messaggi dal 06 settembre 2002
Direi prorpio che il problema sia lì.

In generale a rallentare le pagine ASP sono sempre le query.

Su che DBMS lavori? SQLSERVER, ACCESS; MYSQL; ...


96 messaggi dal 05 maggio 2002
uso un Db access!
ma il problema del rallentamento mi viene dato solo in quella pagina, le altre vengono caricate benissimo!

lo scoppato:)

lo scoppato:)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.