PHP ve S3 görüntü önbelleğe vs görüntü işleme

3 Cevap php

İşte şeydir. Şu anda insanların kendi ürünleri için bir sürü resim gönderebilirsiniz Bu e-ticaret web sitesi var. Tüm görüntüler Amazon'un S3 saklanır. Bir resmini falan ihtiyacım olduğunda bir kullanılabilir varsa, ben S3 üzerinde kontrol. Eğer değilse, ben birini işlemek ve S3 göndermek ve tarayıcıda görüntülemek. Her farklı büyüklükteki küçük S3 saklanır ve her isteği resim durumunu kontrol para tür alıcıdır alır. Ben sitesinde (o alırsa ...) daha fazla ilgi almak için başladığında ben bir sürü ödemek korkuyorum.

Alternatifleri düşünmeye, ben S3 sadece orijinal görüntüleri tutmak ve her isteği anında görüntüleri işleyecek üzerinde düşünüyordum. Ben bu şekilde ben CPU kullanımı on tarafından olacağını hayal, ama ben ne kadar gidebilirsiniz görmek için herhangi kriterleri yapılmış değil. Şey para isteklerini yapma ve S3 hakkında daha fazla görüntüleri depolamak tüketmek olmaz ve ben kullanıcının tarayıcısında her şeyi önbelleğe olmasıdır. Ben burada bu soruyu götürüyorum neden olduğunu bu yüzden, bunu yapmak için bu güvenli olmadığını biliyorum.

Sen ne düşünüyorsun? Nasıl Bunu çözmek olabilir sizce? Gelişmiş çocuklar Teşekkür! Bye!

3 Cevap

Yerel önbelleğini tutun:

  1. Görüntüler S3 hangi
  2. En popüler görüntüleri bir önbellek

Sonra her iki durumda yerel bir başvuru var. Görüntü yerel önbellekte değilse, bunu S3 olup olmadığını görmek için yerel bir önbellek kontrol edebilirsiniz. En popüler öğeleri S3 trafiği kaydeder değil yerel bir önbellek bir öğe için S3 kontrol ederken gecikme kaydeder.

Ben yüklenme sırasında yeniden boyutlandırmak ve S3 tüm versiyonunu saklamak istiyorsunuz.

Örneğin daha büyük bir görüntüyü (1200x1200 ~ 200kb) var ve sadece (benim test görüntü, YMMV için) yaklaşık% 16 ya da 32KB eklemek 3 resized versiyonu (300x300, 120x120 ve 60x60) oluşturursanız. Bir milyon görüntüleri saklamak gerekir Diyelim ki; O daha kabaca 30 GB veya 4,5 $ ekstra bir ay. Flickr o büyük eğer bir ay ~ $ 9k ekstra (2007) 2 milyar görüntüleri, çok kötü olduğu bildirilmiştir.

Bir diğer önemli avantajı Amazon'un CloudFront kullanmak mümkün olacak.

(Eğer yapıyoruz gibi geliyor) müşterilerine S3'ten vekalet ediyorsanız, iki optimizasyonlar göz önünde bulundurun:

  1. Yükleme anda, bir kerede görüntüleri yeniden boyutlandırmak ve bir paket (katran, XML, ne olursa olsun) olarak yükleyebilirsiniz
  2. Ön uç düğümler bu görüntü paketleri önbelleğe.

'Resim paket' S3 özgür değildir, hangi / DELETE işlemleri GET / PUT sayısını azaltacaktır. Eğer 4 görüntü boyutlarını varsa, 4 ile aşağı kesecek.

Ben iş akışı genellikle bir resmini görmek olduğunu anlamaya beri önbellek ayrıca, S3 trafiği azaltacaktır -> daha büyük bir resim için tıklayınız.

Bunun üstüne, size bir küme kullanıyorsanız eğer önceden önbelleğe yüzden aktif web düğümlerine itti 'sıcak görüntüler' önbelleğini uygulayabilirsiniz.

<-> S3 Ayrıca, ben SliceHost kullanmanızı tavsiye etmiyoruz. Geçiş maliyetleri seni öldürecek. Eğer gerçekten bant genişliği (Money!!) Bir ton kaydetmek için EC2 kullanmalısınız.

Eğer vekalet, ama görüntüler için müşteri S3 URL teslim değilseniz, kesinlikle preprocess için tüm görüntüleri isteyeceksiniz. Sonra onları kontrol etmek zorunda değilsiniz, ama sadece müşteri için URL geçmektedir.

Görüntüleri yeniden işleme her zaman maliyetlidir. Eğer tüm görüntüler yeniden boyutlandırılabilir varsayalım eğer, web düğümleri çaba miktarı aşağı gider bulacaksınız ve her şeyi hızlandırır. Birden S3 istekleri kapalı ateş değil çünkü bu özellikle doğrudur.