PDA

Visualizza versione completa : Pagina in un colpo solo


Black
06-06-2002, 14.04.52
Vi espongo il mio problema:
ho un file HTML dove all'interno "incollo" con degli IFRAME degli script in ASP.
Quando carico via browser il file generale HTML questo viene caricato pezzo pezzo (ovvero prima la parte Html e poi le parti in ASP per via delle query che ha ogni singolo script).

E' possibile far visualizzare la pagina HTML (tramite qualche tag o altro) solo dopo che ha caricato tutti gli script...ovvero in un colpo solo?

Spero di essermi spiegato altrimenti chiedetemi :D

Grazie ;)

P8257 WebMaster
07-06-2002, 08.56.08
Il tuo thread solleva la pesantissima questione del context-switch.

Il context-switch è il passaggio dinamico tra aree di codice client e server in una pagina dinamica, il caricamento di una pagina e la sua processazione sono chiaramente interamente demandati al browser per quanto riguarda il client ed al server per quanto riguarda la parte server appunto.

Molti sono i fattori che determinano la priorità e l'ordinamento degli oggetti visualizzati in fase di caricamento, non ultimi la velocità di connessione e la presenza di eventuali immagini. Fare quindi in modo che la pagina si carichi, diciamo così, in un 'colpo solo' è praticamente impossibile però si può realizzare qualcosa di molto simile dando una mano al server rendendogli la vita facile eliminando il più possibile il context-switch appunto.

Tutto questo semplicemente eseguendo PRIMA tutta la parte server e successivamente la parte client così da avere già in anticipo i risultati delle eventuali query presenti nella pagina che possono essere quindi visualizzate 'in simultanea' dal browser.

Diagramma:
----------------------
<%
Parte server a inizio pagina

con area query

risultati scaricati in variabili

%>

< header html della pagina >

< body >

controlli html con semplice stampa delle variabili di cui sopra

< /body >

< /fine >

----------------------

Il diagramma mostra in sintesi il concetto, se nella parte dinamica iniziale poniamo tutte le query, il codice più pesante sarà eseguito in simultanea PRIMA che il browser possa visualizzare il contenuto su schermo. Nella parte html della pagina (parte client) andremo semplicmente a stampare i dati acquisiti, procedura queta che richiede meno tempo e sforzo da parte del server.

Bye :cool:

P8257 WebMaster
07-06-2002, 09.01.46
... :D .. ops..

Black
07-06-2002, 10.39.01
il tuo ragionamento è giustissimo ma è fattibile solo se il codice HTML e ASP sono nella stessa pagina (infatti in questo caso anche io metto il codice server in testa e il codice client in coda)
Ma per il caso seguente c'è soluzione?

<HTML>
<BODY>
-------
serie di istruzioni
<IFRAME src=prova.asp></iframe>
serie di istruzioni
<IFRAME src=prova2.asp></iframe>
<IFRAME src=prova3.asp></iframe>
-------
</BODY>
</HTML>

in questo caso ogni script (prova.asp, prova2.asp ecc) ha al suo interno accessi a db e relative query.

Visto che questi script prelevano i primi 5 record di una tabella (access) in ordine di data, attualmente io faccio una query e poi visualizzo i primi 5.

Esempio:
"SELECT TITOLO,LINK FROM TABELLA1 ORDER BY DATA DESC"
Così li prendo tutti e poi nel codice HTML visualizzo i primi 5.


Questo va bene se i record sono pochi, ma in visione di migliaia di record la query prenderà molto tempo.
Non c'è un modo per estrapolare direttamente i primi 5 ?

Grazie ;)

P8257 WebMaster
07-06-2002, 10.48.20
Certo,
potresti usare un contatore incrementale come chiave del db. da scansionare con un ciclo per poi comporre una stringa query con diverse condizioni 'or' ordinate secondo la data.

Questo almeno accelererà l'esecuzione

Bye :cool:

quipo.it
07-06-2002, 11.27.07
scusa, ma non puoi ottenere il risultato che cerchi semplicemente con dei Server Side Includes? Ovvero, anziché fare una pagina con vari iframes, ne fai una sola senza frames e metti al posto giusto i vari frammenti di pagina che vengono creati in dinamico sul server... forse non ho capito il tuo problema, ma questa mi sembra la soluzione migliore...

Black
10-06-2002, 09.38.57
Originariamente inviato da P8257 WebMaster
Certo,
potresti usare un contatore incrementale come chiave del db. da scansionare con un ciclo per poi comporre una stringa query con diverse condizioni 'or' ordinate secondo la data.
Questo almeno accelererà l'esecuzione


Ho visto che si può settare il numero di MaxRecords del recordset prima di fare la open. In questo modo dovrebbe mettere nel recordset solo il numero di record specificato in MaxRecords...ci sono vari esempi i rete....ne andasse uno per sbaglio :mad: :eek:

Black
10-06-2002, 09.39.37
Originariamente inviato da quipo.it
scusa, ma non puoi ottenere il risultato che cerchi semplicemente con dei Server Side Includes? Ovvero, anziché fare una pagina con vari iframes, ne fai una sola senza frames e metti al posto giusto i vari frammenti di pagina che vengono creati in dinamico sul server... forse non ho capito il tuo problema, ma questa mi sembra la soluzione migliore...


dici di mettere i vari pezzettoni come include?

quipo.it
10-06-2002, 09.47.29
Proprio così... oltretutto elimini anche non pochi problemi di compatibilità tra i vari browser...

Black
10-06-2002, 13.57.28
Originariamente inviato da quipo.it
Proprio così... oltretutto elimini anche non pochi problemi di compatibilità tra i vari browser...

l'ho fatto ed effettivamente hai ragione tu: è molto più veloce e non si ha l'effetto "puzzle"

Grazie ;)

quipo.it
10-06-2002, 19.24.31
:)

DavideDave
17-06-2002, 18.27.13
Originariamente inviato da Black

"SELECT TITOLO,LINK FROM TABELLA1 ORDER BY DATA DESC"
Così li prendo tutti e poi nel codice HTML visualizzo i primi 5.


Questo va bene se i record sono pochi, ma in visione di migliaia di record la query prenderà molto tempo.
Non c'è un modo per estrapolare direttamente i primi 5 ?

Grazie ;)

where rownum < 6

Ciao :)

quipo.it
17-06-2002, 19.13.45
oppure, meglio, "LIMIT 5"

DavideDave
17-06-2002, 20.23.37
Originariamente inviato da quipo.it
oppure, meglio, "LIMIT 5"

ma non è una funzione SQL!!

o sbaglio? :confused:

dai dai facciamo lavorare un pò anche sti DB!!! :S

Black
19-06-2002, 00.28.16
Originariamente inviato da DavideDave


where rownum < 6

Ciao

so che questa istruzione puoi usarla in query Oracle ma non in query ACCESS 2000 o sbaglio?

Black
19-06-2002, 00.28.58
Originariamente inviato da quipo.it
oppure, meglio, "LIMIT 5"

mi faresti un esempio di sql con questo comando?

grazie ;)

quipo.it
19-06-2002, 02.51.10
Originariamente inviato da DavideDave
Infatti parlando di DBMS un pochino seri non penso ci si riferisca pure ad Access 2000 :rolleyes: :D

Oracle rulez


Perché, Access è un DBMS??? :D :D
Scherzi a parte, a mio parere è davvero troppo limitato per qualunque situazione che vada oltre la catalogazione libri di una biblioteca...
Anche senza passare a Oracle, che ritengo cmq il migliore in assoluto x velocità e potenza (i trigger sono una favola!), ci sono tanti altri DBMS migliori, alcuni anche gratuiti o quasi.
Se proprio non puoi fare a meno di usare Access, prova a mandarmi il tuo db con qualche dato farlocco (ho detto qualche, non MB di roba!), e provo a vedere se riesco a spremere Access.
Non garantisco nulla però, perché non l'ho usato molto, giusto il tempo di accorgermi che mi era impossibile fare qualunque cosa di serio...

quipo.it
19-06-2002, 04.09.44
Originariamente inviato da DavideDave


ma non è una funzione SQL!!

o sbaglio? :confused:

Beh, non fa parte dell'SQL-2 del 1992, ma c'è nell'SQL-3 del 1993... e credo che ormai l'abbiano implementata un po' tutti i DBMS un pochino seri... :)

x Black:

SELECT TITOLO,LINK FROM TABELLA1 ORDER BY DATA DESC LIMIT 5

Black
19-06-2002, 06.15.06
Originariamente inviato da quipo.it

x Black:

SELECT TITOLO,LINK FROM TABELLA1 ORDER BY DATA DESC LIMIT 5

sicuro che funga sotto access 2000?
Ho fatto una prova e non riconosce LIMIT

DavideDave
19-06-2002, 14.51.30
Infatti parlando di DBMS un pochino seri non penso ci si riferisca pure ad Access 2000 :rolleyes: :D

Oracle rulez

Black
19-06-2002, 15.27.41
Originariamente inviato da DavideDave
Infatti parlando di DBMS un pochino seri non penso ci si riferisca pure ad Access 2000

Ho avuto modo infatti di usare Oracle in ufficio e sono rimasto stupito infatti per la velocità e robustezza.

Ma ahimè lavoro anche in Access e questo problema mi sta assillando da giorni ormai :rolleyes: