Saya mengembangkan di iOS , dan saya beralih dari backend PHP ke Ruby on Rails. Format pertukaran adalah JSON .
Pencarian Google cepat untuk 'menyimpan gambar di Rails' memiliki hampir setiap hasil berbicara tentang menyimpan data gambar sebagai gumpalan ke database. Saya mungkin salah, tetapi saya mendapat kesan bahwa menyimpan data gambar dalam database adalah pemborosan waktu dan ruang yang sangat besar (dibandingkan dengan menyimpan tautan ke lokasi file ('/img/subcat/4656.png') .
Di PHP, cukup standar untuk menerima data, menghasilkan nama file, menyimpan file itu ke disk, dan memperbarui database dengan lokasi gambar pada disk. Apakah ini sama dengan Ruby on Rails, atau ada beberapa fungsi gambar ActiveRecord bawaan yang tidak saya sadari?
sumber
Jawaban:
Apa yang saya lakukan di masa lalu adalah menggunakan PaperClip dengan Amazon S3 dan CloudFront CDN untuk pengiriman yang lebih cepat. PaperClip mendukung penyimpanan S3 dengan sangat baik di luar kotak: lihat dokumentasi mereka untuk opsi konfigurasi penyimpanan S3 .
s3_host_alias: assets.example.com
. Ini akan menyebabkan URL yang dihasilkan ke sumber daya gambar yang disimpan untuk menggunakan host distribusi CloudFront Anda.config.action_controller.asset_host = http://assets.example.com
. URL aset Ruby on Rails kemudian juga akan menggunakan distribusi CloudFront Anda, untuk caching / pengiriman yang lebih cepat.Itu cukup samar, tetapi mudah-mudahan itu menunjukkan Anda ke arah beberapa sumber daya yang berguna. Tentu saja, itu hanya satu solusi, tetapi itu salah satu yang telah bekerja untuk saya dalam situasi di mana saya berurusan dengan ratusan ribu lampiran gambar dalam database.
(Sebagai langkah lanjutan yang mungkin tidak diperlukan atau berguna untuk kasus Anda, Anda juga dapat mengatur beberapa CNAME untuk distribusi CloudFront Anda, seperti
assets0.example.com
danassets1.example.com
. Keduanya penjepit kertass3_host_alias
danaction_controller.asset_host
kemudian dapat mengambil lambda yang akan memungkinkan Anda untuk secara deterministik (berdasarkan pada aset) menghasilkan URL yang menggunakan host yang berbeda, untuk paralelisasi yang lebih baik jika Anda mengunduh banyak dari mereka di halaman yang sama, karena browser akan membatasi koneksi simultan maksimum ke host yang sama.)sumber
Saya sudah mencoba beberapa permata, tetapi sekarang saya menggunakan FineUploader bersama dengan PaperClip
FineUploader menangani banyak GUI untuk Anda, misalnya kemajuan unggahan, seret-dan-jatuhkan dan beberapa unggahan file, dan sebagainya. Saya menggunakan PaperClip karena saya ingin menyimpan gambar di server saya bukan di S3.
Apa yang biasanya kita lakukan adalah mencari solusi yang dapat dikonfigurasikan out-of-the-box yang stabil alih-alih menciptakan kembali barang-barang dari awal. Dengan PaperClip saya menyimpan gambar dan dengan StateMachine saya melakukan konversi pada gambar dan memasukkannya ke dalam kategori berdasarkan nama file. Saya memiliki pertanyaan yang sama dengan yang Anda miliki, dan ini adalah solusi kerja terbaik saya, itulah mengapa saya membagikannya.
sumber