Pagine statiche e pagine dinamiche

Il dinamismo, contrariamente a quanto verrebbe da pensare ad un non tecnico, non ha niente a che vedere con eventuali movimenti (animazioni, multimedialità varia) nella pagina.

Per dinamica si intende una pagina il cui contenuto non è prefissato, ma viene (parzialmente o interamente) generato in tempo reale in base alle richieste dell'utente.

L'esempio più chiaro e noto a tutti è quello dei motori di ricerca: ovviamente non sono presenti sul server di Google (a.e.) tutte (miliardi?, migliaia di miliardi?) le pagine associate alle possibili combinazioni di termini che un utente immette nel box di ricerca, ma le pagine vengono create al volo, con links, numeri di pagine interni, pubblicità etc.

Ma facciamo un passo indietro...

Quando digitate nella barra degli indirizzi del browser un indirizzo che finisce per .html (o ci arrivate seguendo un link), quasi sicuramente state vedendo una pagina statica. In sintesi, il webserver che voi chiamate (per sempio 8-p.it) si sta comportando essenzialmente come un hard disk remoto: controlla se la pagina esiste e ve la fornisce così com'è (eventualmente inviando al browser anche eventuali contributi associati alla pagina: immagini, stili, etc.). Se voi salvate il file sul vostro disco fisso, insieme agli eventuali contributi (cosa che praticamente tutti i browser sono in grado di fare), potete ri-caricare la pagina esattamente nello stesso modo.

Questo è, storicamente, il sistema originario del web, quando gli utenti erano pochi e poche le informazioni veicolate: Internet serviva come una enorme rete locale, in cui pescare semplicemente i documenti desiderati (con alcuni vantaggi derivanti del sistema di hyperlink).

Una pagina dinamica, invece, ha di solito un'estensione diversa (.php .jsp .cfm .aspx) e spesso anche dei parametri dopo un punto di domanda (tipo ?sezione=3&pagina=5). La pagina ha in genere una parte del contenuto fissa, ma anche una parte scritta in un linguaggio di scripting che non vi viene mandata così com'è, ma viene prima interpretata dal webserver, che fa delle operazioni, da molto semplici a molto complesse, e invia infine la pagina finale al vostro browser.

Di fatto, a questo punto la pagina (quando è sul vostro schermo) è diventata a tutti gli effetti statica (html) e infatti la potete salvare, facendone in un certo senso la fotografia, ma perdendone tutte le caratteristiche dinamiche. Pensate ad esempio ad un sistema di news: se salvate la pagina la potete riaprire, ma l'ultima news sarà sempre la stessa, mentre online la news si aggiorna continuamente.

Il punto importante è che la news online non viene aggiunta modificando il documento sul server e che questo, in realtà, resta sempre invariato.

E allora da dove arriva il contenuto aggiornato? Di solito da un database (un insieme di tabelle che contengono dati, di solito numerici o di testo), anche lui residente sul server, con cui il codice di scripting di cui parlavo sopra colloquia secondo le direttive imposte dal programmatore.

Schematizzando:

Pagine statiche

Browser del client (voi) -> chiede la pagina index.html -> Webserver -> invia il documento -> Browser del client

Pagine dinamiche

Browser del client (voi) -> chiede la pagina index.php?sezione=2 -> Webserver -> riconosce dall'estensione (php) che la pagina è dinamica e quindi processa* il file index.php -> Trasforma il risultato dell'elaborazione in html -> invia il documento -> Browser del client

*Cosa significa "processa"?
Per fare un esempio reale (nel senso che l'ho fatto due giorni fa per un sito): mettiamo che la pagina debba presentare un'immagine a caso nella testata, ma non a caso assolutamente, bensì in base alla sezione del sito in cui ci si trova; il linguaggio di scripting attivato dal webserver legge che la sezione vale 2 -> chiede al database quale cartella sul server corrisponde alla sezione 2, quante immagini ci sono e come si chiamano -> ottenuti i risultati, usa alcune sue funzioni interne per generare un numero casuale compreso fra 1 e il numero totale di immagini in quella cartella -> va a scrivere nella pagina che l'immagine associata è, diciamo, la terza in quella cartella -> manda al webserver (e quindi infine al voi, il client) il risultato (html)

Per chi vuole approfondire un buon punto di partenza è, come sempre, Wikipedia.

Un'ultima nota
Qualcuno chiederà: ma il tuo blog non è dinamico? Non ci sono estensioni dei files o quando ci sono sono .html e nemmeno ci sono parametri! Qui la cosa si fa complicata. Molto brevemente: dal momento che i motori di ricerca indicizzano (leggono e mettono via) meglio le pagine con nomi "umani" di quelle con tanti parametri numerici, la moda degli ultimi tempi è quella di mascherare le URL (gli indirizzi) dinamiche dietro una facciata SEF (Search Engine Friendly). Sorvolo su come questo si possa ottenere, ma sappiate che è un trucco. Questa pagina, per esempio, può essere vista anche nella sua forma pura (a dire il vero già abbastanza SEF), mettendo nella barra degli indirizzi questo link: http://www.8-p.it/index.php?/archivi/19-Pagine-statiche-e-pagine-dinamiche.html

 

Trackbacks

    Nessun Trackbacks

Commenti

Mostra commenti (Cronologicamente | Per argomento)

  1. fjster dice:

    Ciao,
    volevo chiederti visto che parlavi di questo argomento,non capisco perche' prima il mio link finiva con blogspot.com,(almeno che non ci abbia fatto caso ma non penso) ed ora con l'aggiunta di index.html!
    E' il browser!
    Ho modificato qualcosa per vederla cosi'?
    O e' normale?
    Scusa per le molteplici domande ma non capisco come mai, sai non e' che sia molto esperto.
    Ti ringrazio ;-)

  2. Matteo Boria dice:

    In realtà il browser non c'entra...
    Semplicemente ogni web server ha un "documento di default" che va a cercare quando uno scrive un indirizzo senza specificare il nome finale del file. Per apache in genere è index.xxx, per IIS default.xxx (dove xxx sono "htm", "html", "php", "asp" e così via). In pratica, se tu scrivi http://www.pluto.est/ il web server "va a cercare" se esiste fisicamente in quella cartella (in questo caso la cartella radice del sito) il documento di default: se esiste lo mostra, in caso contrario può (in base a come è stato settato) dare un messaggio di errore o far vedere tutti i files in quella cartella.

    In parole povere: nel tuo caso scrivere "index.html" o non scriverlo nella URL è assolutamente la stessa cosa (dal momento che esiste il file). Prova!
    Ciao

  3. fjster dice:

    Grazie per la risposta, in effetti poi sono riuscito a chiarirmi tutto.
    Ti auguro un buon anno.
    Max ;-)

  4. Harry Potter dice:

    Vorrei suggerirti di approfondire quali sono i criteri corretti che una web-application deve rispettare secondo quanto richiesto dal W3C, criteri piuttosto rigidi e di cui i tuoi progetti, da quanto ho constatato, sono totalmente privi. Difatti non basta essere un bravo programmatore, sapere come si cinfigura un template in php per esempio, per riuscire a produrre una web-application corretta e funzionale. Se non ci credi prova a verificare tu stesso con una delle tue pagine: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.8-p.it%2Farchivi%2F19-Pagine-statiche-e-pagine-dinamiche.html%23comments&charset=%28detect+automatically%29&doctype=Inline. Scusa, senza offesa, ma noi analisti-programmatori-webDesigner ci siamo fatti un mazzo triplo per imparare a fare bene il nostro lavoro e ci dispiace un pò tanto che in giro ci siano gli "appassionati" che ci portano via il lavoro senza molta cognizione di causa! Ciao e buon lavoro

  5. Matteo dice:

    Grazie! In effetti avevo messo il javascript di Google-analytics sotto la "head".
    Il resto degli "errori" sono a carico del software del Blog (l'ottimo e opensource Serendipity) e dell'editor HTML incluso (l'un po' datato ma sempre valido HTMLArea - meglio comunque TinyMCE). Se speri che per un sito personale e gratuito mi rivada a controllare tutto il codice di Serendipity e l'html di ogni post, davvero non ti capisco...
    Comunque, pur non di formazione informatica, HTML, PHP e compagnia bella sono il mio lavoro.
    Certo non sono bravo come te, ma dammi tempo.
    Invece di perdere tempo su un blog da poche centinaia di accessi al giorno, perchè non provi a segnalare questo rigore a qualcun altro, tipo:
    http://validator.w3.org/check?uri=http%3A%2F%2Fwww.google.com&charset=%28detect+automatically%29&doctype=Inline
    Baci. Matteo.
    (Mi dici chi sei? un sospetto ce l'avrei...)

  6. Arianna dice:

    Grazie Matteo per le tue spiegazioni sulle pagine statiche e dinamiche!

    ...ma sa che mando il link al mio prof di informatica!...


Aggiungi Commento


Puoi scrivere in grassetto usando due asterischi (*testo in bold*), e sottolineare con due underscore (_testo sottolineato_).
Le emoticons qui sotto sono convertite in immagini.
:'(   :-)   :|   :-O   :-(   8-)   :-D   :-P   ;-)

Per evitare spam e inserimenti da parte di script, devi reinserire i caratteri che vedi nell'immagine qui sotto (richiede l'abilitazione dei cookies).
CAPTCHA 1CAPTCHA 2CAPTCHA 3CAPTCHA 4CAPTCHA 5