Yüklenen görüntüyü depolamak için en iyi yaklaşım

2 Cevap php

Veritabanında sadece dosya adını saklamak vs veritabanında bir damla gibi bir görüntü depolama avantajları ve dezavantajları nelerdir.

MySQL ile PHP (CodeIgniter) kullanıyorum.

I know this question is subjective but a client asked me this question and I couldn't give a good answer.

2 Cevap

Ben genellikle bu söyleyebilirim:

  • database is harder to scale :
    • Çünkü görüntülerin birkaç GB boyutu olan bir DB olan birçok şeyi (backup, for example) daha zor hale getirecek.
    • Eğer ... dosyaları hizmet etmek, DB sunucular üzerinde daha fazla yük koymak istiyorsun?
  • serving images from the filesystem is something that webservers do well
    • ve bir DB sunucu içermeyen bazı görevleri (like generating thumbnails, for example) yapmanızı sağlar
    • Gerekirse ben size CDN çeşit kullanmak istediğiniz düz eski dosyaları kullanarak aynı gün işler daha kolay hale getirecek, varsayalım

Hangi ben hemen hemen her zaman dosya sistemi görüntüleri / dosyaları saklamak ve sadece veritabanında dosyanın adını (and, possibly, size and content-type -- that can always be useful) saklamak istiyorsunuz demektir.


Thinking about it, that question is probably a duplicate... Oh, yes, it actually is ; see at least those questions+answers :

Ben yükledi görüntü dosyalarını yeniden adlandırın ve 3 klasör içine yükleyin sonra ... kendi ebeveyn (kullanıcı, ürün) ile ilgili db satıra bunları depolamak için tercih:

/uploads
  /img
    /products
     /small 
     /medium 
     /xxl 

bu dizinlere onlara geçmeden önce küçük (50x50) bunları yeniden boyutlandırma, orta (90x90), xxl (orijinal boyut),.

SEO görüntüleri gerekir Örneğin eğer bunları saklayabilirsiniz:

id | product | image
1    book      1-book.png

böylece aynı görüntü dosyasında id ve ürün adı alırsınız.

ya da hatta sadece saklayabilirsiniz

id | product | image
1    book      1.png

sonra src yolları eklemek basittir:

/*Config file*/
$config['base_static_products_url'] = 'uploads/img/products/';

/*View file*/

<img src="<?php echo base_url().$this->config->config['base_static_products_url'].'/small/'.$row->image ?>" alt=""/>

OR (no SEO)

<img src="<?php echo base_url().$this->config->config['base_static_products_url'].'/small/'.$row->id.'.png' ?>" alt=""/>