2012-03-18 6 views
18

Quali sono i pro/contro dell'usare meno lato server vs lato client in un ambiente di produzione dal vivo? Perché dovrei convertire il mio meno in css statico e usarlo quando vado in diretta? Come ho capito il css è memorizzato nella cache sia lato server che lato client, quindi la velocità non dovrebbe essere un problema e js non essendo disponibile non è un problema in quanto la mia app è molto dipendente da javascript quindi se non è disponibile avrei maggiori problemi. Non capisco appieno come funziona la compilazione lato server .... grazieUtilizzare meno lato del server preprocessore css o lato client

risposta

25

Ho lavorato a un grande progetto che utilizzava MENO. Il problema principale che abbiamo incontrato nella compilazione lato client (negli ambienti di sviluppo) è che dal momento che la compilazione lato client richiede JavaScript e la stampa rende la pagina su carta senza JavaScript abilitato, così ogni volta che qualcuno ha stampato una pagina sarebbe uscito completamente senza stile. Anche se l'applicazione utilizza una quantità elevata di JavaScript come la nostra, se si desidera supportare la stampa è necessario compilare lato server o fornire CSS statici.

La soluzione che ha funzionato meglio per noi era eseguire node.js per compilare al volo LESS al volo mentre si trovava in ambienti di sviluppo, quindi eseguire la pre-compilazione su un singolo file css gzip durante la distribuzione del sito in produzione.

La pre-compilazione riduce anche il numero di singole richieste di file eseguite dal client da dozzine per pagina nel nostro caso (uno per ogni file LESS) a un solo file CSS, e rende più veloce il caricamento evitando il passo di compilazione (quale lato client less.js deve essere eseguito ogni volta che viene aperta una nuova pagina prima che la pagina possa iniziare il rendering.)

Non consiglio di compilarlo al volo lato server in un ambiente di produzione dal vivo, perché questo aggiungerà un carico di processore non necessario. Se lo si compila in anticipo, non consumerà più risorse del server di un singolo file CSS comune.

+0

grazie, solo per confermare che ho capito ... questo significa sul lato client, ogni volta che una pagina viene caricata meno viene elaborato. sul lato server, meno viene elaborato solo per la prima pagina che viene caricata e quindi memorizzata nella cache e non elaborata di nuovo? –

+0

Sì, sul lato client deve essere compilato ogni volta che viene visualizzata una pagina. Se si dispone di una buona implementazione sul lato server, memorizzerà nella cache il CSS compilato e lo servirà finché i file di origine di LESS non cambiano. Ma se non pianifichi di cambiare i fogli di stile al volo, puoi facilmente compilare il tuo LESS in anticipo quando lo si distribuisce per la prima volta in produzione, salvandolo come un semplice file CSS a cui si fa riferimento direttamente dal codice HTML. Ciò impedirà a node.js di essere eseguito ed è di gran lunga il modo più efficiente di servire MENO. –

+1

Inoltre: è meglio compilare il CSS una volta come parte di uno script di distribuzione piuttosto che contare sulla compilazione che funziona automaticamente dal server. – mlissner

3

Il browser può solo memorizzare nella cache i dati ricevuti dal server. Questo è non includere il CSS compilato nel browser da meno (meccanismi di archiviazione locali HTML5 a parte). Ciò significa che il browser dovrebbe compilare meno file in CSS ogni volta che vengono caricati, anche se il file meno viene caricato dalla cache del browser anziché dal server.