Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [PERFORMANCE] i css generati con php sono lenti?

    ho un css da 500 righe circa. mi piacerebbe generarlo via php, per poter definire una volta soltanto i colori che il css debba utilizzare. uso una struttura di questo tipo percui:

    miocss.php
    Codice PHP:
    $colore_testo "#000000";
    $colore_sfondo "#ffffff";
    echo 
    "
      body {
        color: 
    $colore_testo;
        background-color: 
    $colore_sfondo;
      }
    "

    quanto influisce questo passaggio (generazione del php) sulla velocità di navigazione dell'utente?
    si vivono molte vite e si muore una volta sola

  2. #2
    Influisce per il tempo impiegato dal motore Zend ad eseguire lo script. Comunque se non imposti correttamente gli header, potrebbe richiedere al client di scaricare nuovamente il CSS per ogni nuova pagina.

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da filippo.toso
    potrebbe richiedere al client di scaricare nuovamente il CSS per ogni nuova pagina.
    Cosa peraltro saggia, se il css è dinamico...

  4. #4
    Saggia fino ad un certo punto.

    Se il CSS è dinamico ma solo a livello di utente (es. utenti diversi hanno CSS diversi), allora gli header dovrebbero informare il client di scaricare il foglio di stile solo quando questo cambia per l'utente che lo richiede (es. solo dopo che ha modificato delle impostazioni) e non ad ogni nuova pagina che viene richiesta.

  5. #5
    Se il CSS è dinamico ma solo a livello di utente (es. utenti diversi hanno CSS diversi), allora gli header dovrebbero informare il client di scaricare il foglio di stile solo quando questo cambia per l'utente che lo richiede (es. solo dopo che ha modificato delle impostazioni) e non ad ogni nuova pagina che viene richiesta.
    la domanda quindi diventa:

    1) come impostare gli header per dire a zend di non rieseguire lo script ogni volta?

    2) e nel caso di utenti con css differenti?
    si vivono molte vite e si muore una volta sola

  6. #6
    a zend non gli si deve dire nulla, lo si deve dire al browser al quale va comunicato, con gli header corretti (dai un occhio ai relativi RFC - cerca su google per quali), se il file è variato dall'ultimo scaricamento effettuato dal browser e cosi via

    personalmente, comunque, non ritengo molto utile far generare i CSS a php, se c'è l'esigenza di CSS dinamici direi di relegare ad un CSS apposito questo e, quando non è necessario, non utilizzarlo proprio disabilitandolo dall'html

    Comunque non influisce solamente il lavoro che fa php, ma anche quello del browser e del webserver infatti per ogni file in più e necessario una connessione in più al webserver: se si vuole fare una cosa del genere trovo molto più saggio andare a gestire un OB (Output Buffer http://it.php.net/manual/en/ref.outcontrol.php ) e andare a modificare l'elenco dei CSS inclusi per metterli dentro uno solo (gestendo correttamente anche la cache) e creare un CSS accorpando i vari preoccupandosi anche degli aggiornamenti (crc32, date di modifica)

    questa soluzione, anche se non sembra, fa risparmiare PARECCHIO carico: windows xp è limitato a 10 connessioni contemporanee tcp, e internet explorer (se non erro) non ne effettua più di un paio per istanza cosa che comporta che un sito che ha 10 css ed un botto di immagini, anche piccole, impiegherà una vita prima di visualizzare il sito ... è vero che qui entra in gioco il keep-alive ma è solo un tampone non la soluzione

  7. #7
    Daniele, ti ringrazio!
    solo vorrei chiederti alcune cose nello specifico:

    a zend non gli si deve dire nulla, lo si deve dire al browser al quale va comunicato, con gli header corretti (dai un occhio ai relativi RFC - cerca su google per quali), se il file è variato dall'ultimo scaricamento effettuato dal browser e cosi via
    ho capito alla perfezione ma non ho capito come implementare gli header. hai un esempio o un link da darmi?

    personalmente, comunque, non ritengo molto utile far generare i CSS a php, se c'è l'esigenza di CSS dinamici direi di relegare ad un CSS apposito questo
    come posso creare css dinamici senza php?

    e, quando non è necessario, non utilizzarlo proprio disabilitandolo dall'html
    come si disabilita un css dall'html? nel senso che ometto la riga che lo richiama?

    Comunque non influisce solamente il lavoro che fa php, ma anche quello del browser e del webserver infatti per ogni file in più e necessario una connessione in più al webserver: se si vuole fare una cosa del genere trovo molto più saggio andare a gestire un OB (Output Buffer http://it.php.net/manual/en/ref.outcontrol.php ) e andare a modificare l'elenco dei CSS inclusi per metterli dentro uno solo (gestendo correttamente anche la cache) e creare un CSS accorpando i vari preoccupandosi anche degli aggiornamenti (crc32, date di modifica)
    qui mi sono perso totalmente. intendi dire:
    1) genero la pagina X ma la bufferizzo (OB)
    2) vedo quali css usa [ma lo so già mentre genera la pagina no? perche' bufferizzo?]
    3) apro i css (fopen?) li copio tutti in un unico css C (file_get_contents?)
    4) la prossima volta che genero la pagina X vi allego il css C

    sto delirando? che intentevi?
    si vivono molte vite e si muore una volta sola

  8. #8
    Originariamente inviato da dogeht
    ho capito alla perfezione ma non ho capito come implementare gli header. hai un esempio o un link da darmi?
    devi utilizzare la funzione header per inviare gli headers

    www.php.net/header

    Li trovi anche alcuni riferimenti sugli header da inviare e su quali leggere (dall'array $_SERVER) per vedere qual'è l'ultima cosa che ha in cache in memoria

    come posso creare css dinamici senza php?
    se non erro IE supporta l'inserimento di javascript (o pseudo javascript) nei CSS, ma se ti serve creare effetti specifici secondo me ti conviene usare per lo più librerie come jquery

    come si disabilita un css dall'html? nel senso che ometto la riga che lo richiama?
    si

    qui mi sono perso totalmente. intendi dire:
    1) genero la pagina X ma la bufferizzo (OB)
    2) vedo quali css usa [ma lo so già mentre genera la pagina no? perche' bufferizzo?]
    3) apro i css (fopen?) li copio tutti in un unico css C (file_get_contents?)
    4) la prossima volta che genero la pagina X vi allego il css C

    sto delirando? che intentevi?
    esattamente, ovviamente devi tenere traccia della modifica dei file quindi prima di aprirli magari ceneri un CRC32 del contenuto o un MD5, vedi un pò tu, e poi, se tutto è uguale reinvii lo stesso file altrimenti invii quello nuovo

    devi usare OB perché se vari dinamicamente l'elenco dei CSS inclusi (ad es accedi ad una pagina dove hai un componente che necessita di JS e CSS per decorarlo) devi poterlo gestire

    Per costruire la path al CSS prendi il tag, acquisisci la url, verifichi che inizi con lo stessa path (url) base del sito, rimuovi quindi questa parte iniziale, gli agganci la variabile $_SERVER['DOCUMENT_ROOT'], e hai il percorso al file. Nel caso che la parte iniziale dell'url sia diversa la scarichi.

    usa direttamente file_get_contents tanto i CSS sono abb. piccoli quindi se gestisci bene la cosa non hai problemi a livelli di memoria

  9. #9
    ovviamente devi tenere traccia della modifica dei file quindi prima di aprirli magari ceneri un CRC32 del contenuto o un MD5, vedi un pò tu, e poi, se tutto è uguale reinvii lo stesso file altrimenti invii quello nuovo
    accedere alla proprietà "ultima modifica" del file css e' piu' lento?

    devi usare OB perché se vari dinamicamente l'elenco dei CSS inclusi (ad es accedi ad una pagina dove hai un componente che necessita di JS e CSS per decorarlo) devi poterlo gestire
    sono solito usare un oggetto $response al quale posso addare css in questa maniera:
    $response->add_css( $css_filename );
    e' per questo che non ritengo necessario avvalermi delle funzioni ob (nell'oggetto ho traccia di tutti i css addati). vedi controindicazioni nella mia idea?

    per il resto, l'idea di ottimizzare i css in un unico css piu' grande mi sembra un bell'upgrade per i miei progettini!!! grazie!
    si vivono molte vite e si muore una volta sola

  10. #10
    Originariamente inviato da dogeht
    accedere alla proprietà "ultima modifica" del file css e' piu' lento?
    per lo più non so quanto possa essere utile

    sono solito usare un oggetto $response al quale posso addare css in questa maniera:
    $response->add_css( $css_filename );
    e' per questo che non ritengo necessario avvalermi delle funzioni ob (nell'oggetto ho traccia di tutti i css addati). vedi controindicazioni nella mia idea?

    per il resto, l'idea di ottimizzare i css in un unico css piu' grande mi sembra un bell'upgrade per i miei progettini!!! grazie!
    'pito, però la mia soluzione era più generica perché se domani cambi sistema non ti funziona più nulla

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.