Domanda

Per un'applicazione Web di hosting di immagini:

Per le mie immagini memorizzate, è possibile creare miniature al volo usando PHP (o qualsiasi altra cosa), oppure dovrei salvare 1 o più miniature di dimensioni diverse su disco e caricarle?

Qualsiasi aiuto è apprezzato.

È stato utile?

Soluzione

Salva le miniature sul disco. L'elaborazione delle immagini richiede molte risorse e, a seconda delle dimensioni dell'immagine, potrebbe superare il limite di memoria consentito predefinito per php. È meno preoccupante se hai il tuo server con solo la tua applicazione in esecuzione ma ci vuole ancora molta potenza e memoria della CPU per ridimensionare le immagini. Se stai comunque pensando di creare miniature al volo, non devi cambiare molto: alla prima richiesta, crea la miniatura dal file di origine, salvala sul disco e su richieste successive basta leggerla dal disco.

Altri suggerimenti

Uso phpThumb , poiché è il migliore dei due mondi. Puoi creare miniature al volo, ma memorizza automaticamente nella cache le immagini per accelerare le richieste future. Crea un bel wrapper attorno alle librerie GD e ImageMagick. Vale la pena dare un'occhiata!

Sarebbe molto meglio memorizzare nella cache le anteprime. Generarli al volo sarebbe molto faticoso per il sistema.

Dipende dal modello di utilizzo del sito, ma, fondamentalmente, quante volte ti aspetti che ogni immagine venga visualizzata?

Nel caso delle miniature, è molto probabile che rimangano in circolazione per un po '(l'immagine viene caricata una volta e non è mai cambiata, quindi anche l'anteprima non cambia), quindi in genere vale la pena generare quando il pieno l'immagine viene caricata e li memorizza per dopo. A meno che il sito non sia completamente morto, verranno visualizzati molte (centinaia o migliaia di) volte nel corso della loro vita e il disco è molto più economico della latenza in questi giorni. Questo diventa anche più significativo all'aumentare del carico sul server, ovviamente.

Al contrario, per qualcosa come grafici azionari che vengono aggiornati ogni ora (se non più frequentemente), quella sarebbe una situazione in cui faresti meglio a crearli al volo, in modo da evitare di perdere tempo in CPU generando costantemente immagini che nessun utente potrà mai vedere.

Oppure, se vuoi essere sofisticato, puoi ottimizzare per gestire entrambi i modelli di accesso generando le immagini al volo la prima volta che sono necessarie e quindi mostrando quello pre-generato in seguito, fino a quando i dati vengono generati dalle modifiche, a quel punto lo elimini in modo che venga rigenerato la prossima volta che è necessario. Ma sarebbe eccessivo per qualcosa di statico come le miniature, IMO.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top