2014-07-08 12 views
14

Sto distribuendo la mia app Web (è per un client aziendale). Quindi, gli utenti non aggiungeranno immagini, ma solo l'azienda lo farà.Posso ospitare immagini in heroku? O ho bisogno di S3?

Ho inviato a Heroku e le mie immagini continuano a essere visualizzate. Quando devo usare S3? Mi piacciono le 100 immagini in totale nel sito e le dimensioni variano come> 7 a settimana. Posso usare solo heroku?

+0

Penso che heroku consentirà alla tua app di crescere (accettare caricamenti) fino a che la dimensione della tua app heroku raggiunga i 500 MB (inclusa la directory pubblica che suppone tenere il tuo immagini) ... Quindi se pensi che i client caricheranno immagini che in totale saranno maggiori di 450 MB funzioneranno ... Più di così non so davvero cosa succederà. –

+3

Non è necessario utilizzare S3, è possibile utilizzare uno qualsiasi dei componenti aggiuntivi di Heroku. Per quanto riguarda l'utilizzo di Heroku, se si prevede di avere un pulsante di caricamento file nella propria app, ogni volta che si spinge su heroku i file verranno cancellati, perché Heroku si sovrascrive con ogni push. –

+0

@JoeKennedy wow ... Beh, gli admin caricheranno nuovi file quindi penso che non sia una buona idea usare quindi Heroku! – Gibson

risposta

27

La risposta breve: se si consente agli utenti o agli amministratori di caricare immagini, non utilizzare il file system di Heroku per questo poiché le immagini scompariranno improvvisamente.

Come spiegato nella Heroku documentation:

Ogni banco prova ottiene il proprio file system effimera, con una nuova copia del codice più recente distribuito. Durante la vita del Dyno i suoi processi in esecuzione possono utilizzare il filesystem come un blocco temporaneo temporaneo, ma nessun file che è scritto è visibile ai processi in nessun altro banco di prova e qualsiasi file scritto verrà scartato nel momento in cui il banco viene fermato o riavviato.

Questo significa che l'utente immagini caricate sul filesystem Heroku non sono solo spazzato via con ogni spinta, ma anche con ogni riavvio banco prova, cosa che accade di tanto in tanto (anche se li si desidera eseguire il ping di frequente per impedire loro di andare a dormire) .

Una volta iniziato a utilizzare un secondo dyno Web, non sarà possibile leggere il file system dell'altro banco, quindi le immagini saranno visibili solo da un banco prova. Ciò causerebbe problemi strani in cui gli utenti possono a volte vedere le immagini e talvolta non lo fanno.

Detto questo, è possibile memorizzare temporaneamente le immagini sul file system Heroku se si implementa a pass-through file upload to an external file store.

+0

Capito perfettamente. Risposta chiara! Grazie – Gibson

5

Asset Pipeline

s' FiveDigit risposta è molto buona - c'è qualcosa di più da considerare; il ruolo del asset pipeline in Rails

Se le immagini che avete sono utilizzati come beni (IE sono utilizzati nel layout, non sono modificabili da parte dell'utente), allora si può memorizzare nella cartella assets/images. Non c'è limite al numero di risorse che puoi conservare con la tua applicazione, ma devi essere sicuro di ciò che sono - sono file che aiutano il funzionamento della tua applicazione; non file che possono essere caricati/manipolate:

Il gasdotto risorsa fornisce un quadro per concatenare e minify o comprimere Javascript e CSS beni. Aggiunge anche la possibilità di scrivere queste risorse in altre lingue e pre-processori come CoffeeScript, Sass e ERB.

La pipeline di asset in grado di comprimere i file di impronte digitali & stylesheet, image e js che ha, quando si distribuisce l'applicazione per artisti del calibro di Heroku, o qualsiasi altro server.Questo significa che se tali file non cambiano, è possibile memorizzare in là

-

S3

Il motivo che ci si vuole utilizzare del calibro di S3 è specificamente se le immagini dei file sono progettati per cambiare (l'utente può caricarli/modificarli). A prescindere dal filesystem di Heroku, se le immagini sono legate ai cambiamenti nel DB, devi tenere un archivio centrale per loro - se cambi server, devono essere raggiungibili

Per fare ciò, dovresti assicurarti di apprezzare come si desidera che i file funzionino, saranno manipolati costantemente dall'utente o no? Se è così, dovrai esplorare l'integrazione

+1

Ciao di nuovo ricco! Userò S3 perché anche se avrò una piccola quantità di immagini, cambieranno ogni giorno ... – Gibson

Problemi correlati