5

Ho pensato un po 'alla soluzione migliore e per quanto ho letto mi sento sempre più confuso. Ci sono molte librerie e aiutanti diversi (la maggior parte sono obsoleti o per CI 1.x) e ho davvero bisogno del tuo aiuto.Il modo migliore per gestire le miniature delle immagini sul sito Web delle notizie (CMS personalizzato basato su codeigniter)?

Ho un CMS personalizzato basato su CodeIgniter 2.1.3, sito di notizie che ha circa 40-50 immagini sulla home page, ma l'80% di esse sono miniature davvero piccole in 3 diverse dimensioni e l'altro 20% del le immagini sulla home page sono in 2 misure + per le pagine interne quando elencho le notizie da una categoria c'è 1 dimensione delle miniature. Quindi, in totale, avrò bisogno dell'immagine originale per la notizia, + 5-6 dimensioni miniature per la home page.

Qual è il modo più intelligente per affrontare questo? Diciamo 10-50 nuove notizie al giorno.

  1. È ancora meglio creare 5-6 miniature per immagine durante il caricamento?
  2. E il metodo "al volo"? Sono più interessato a questo metodo, mentre leggo, solo il primo visitatore chiamerà la libreria/helper per generare le miniature e per gli altri le miniature saranno già create in modo da non sprecare la CPU. Che dire di questo metodo? È una buona pratica?

Quali tecniche di caching dovrei usare per queste cose di cui ho bisogno?

Inoltre ho dimenticato di chiedere, come l'altro sistema CMS si occupa di generare le miniature? Intendo Wordpress, Drupal, Joomla, ecc.

Memorizzano dimensioni predefinite o generano al volo?

Immagino che la loro logica dovrebbe essere la migliore, o forse no, ma voglio implementare qualcosa di intelligente nel mio CMS CodeIgniter.

Non ho menzionato, ma penso che non sia importante, uso Grocery CRUD per il pannello di amministrazione.

Qualsiasi aiuto è apprezzato.

risposta

0

Mi piace il modo in cui Drupal gestisce questo. In Drupal 6 c'era un modulo chiamato imagecache (ora è in core in Drupal 7, ma la funzionalità è molto simile), che in pratica memorizza i preset per le immagini (dimensioni dell'immagine, trasformazioni, effetti ...) e quando il visitatore chiede un'immagine il modulo genera immagini diverse in base ai preset e serve queste immagini. In questo modo si carica un'immagine ma si hanno immagini diverse per scopi diversi.

Il modulo ha una funzione davvero utile, se si desidera modificare un preset, è possibile "svuotare" tutte le immagini relative a quel preset, in modo che i visitatori possano vedere le modifiche.

Naturalmente ci sono molti altri moduli in Drupal legati alla imagecache o immagine stili, che aggiungono altri effetti come filigrane ...

Maggiori informazioni:

2

La soluzione migliore è creare immagini al volo + utilizzare CDN come Amazon Cloudfront per memorizzare la versione ridimensionata ns della tua immagine sorgente.

Ho utilizzato CodeIgniter per un certo numero di anni per creare siti Web in cui vengono utilizzate molte dimensioni di immagini diverse in tutto il sito web. All'inizio usavo creare ogni dimensione necessaria dell'immagine originale durante il processo di caricamento (potevo facilmente finire con più di 5 miniature). Questo ha dimostrato di offrire le migliori prestazioni: ogni volta che hai bisogno di un'immagine delle dimensioni specifiche, la includi semplicemente senza elaborazione PHP aggiuntiva. Tuttavia ho notato che finisco con un numero enorme di immagini sul server, dove i vecchi non possono nemmeno essere usati così spesso (ad es. Articoli più vecchi di un anno). Inoltre lo sviluppo di questa strada richiede più tempo.

Quindi ho iniziato a creare immagini al volo, in primo luogo utilizzando librerie di terze parti e successivamente sviluppato la mia interfaccia per CodeIgniter. Ciò consente di risparmiare un sacco di tempo, perché durante il processo di caricamento si salva una versione originale dell'immagine senza preoccuparsi delle versioni ridimensionate. Quando si visualizza un'immagine nel front-end, tutto ciò che è normalmente necessario fare è passare alcune dimensioni dell'immagine richiesta. In questo modo, non solo è possibile ottenere 5-6 versioni dell'immagine, ma quante ne hai bisogno. Anche questa è una soluzione per il futuro quando ridisegni il tuo sito web dove potrebbero essere necessarie le immagini di diverse dimensioni! Cosa faresti quando nessuna delle 5 opzioni di anteprima non è più valida e hai bisogno di dimensioni diverse?

Hai ragione, il ridimensionamento di un'immagine al volo può davvero essere un'operazione di consumo della CPU (soprattutto quando sono coinvolte le immagini di grandi dimensioni), pertanto il caching è un must. Puoi memorizzare le immagini sul tuo server o ottenere CDN. Per mantenere ordinato il server, di solito eseguo un cron job per eliminare immagini al volo più vecchie di una settimana. Ciò consente di risparmiare spazio + non causare danni: ogni volta che è necessaria l'immagine per la visualizzazione, verrà ricreata.

+0

Questo è esattamente il motivo per cui io sono più nel metodo "on the fly", così ora mi dica qual è il modo migliore per farlo e come farlo , quale libreria usare, come usarla, ecc. – MarkC

+0

Puoi giocare con questo: http://phpthumb.sourceforge.net/. Tuttavia, ho trovato che fosse una libreria piuttosto pesante e potrebbe causare un po 'di overhead di elaborazione. Non sono a conoscenza di librerie libere pubblicamente disponibili su CodeIgniter e ho scritto le mie. Mandami un messaggio se vuoi dargli un'occhiata. Altrimenti puoi cercare librerie per PHP nativi, non specificatamente per CI; dovrebbero essere facilmente integrabili. – Aidas

+0

Mi sono collegato a una lib specificatamente per CI sotto – stef