Görüntü Optimizasyonu (Image Optimization)
Last updated
Was this helpful?
Last updated
Was this helpful?
'a göre, görseller tipik bir web sitesinin sayfa ağırlığının büyük bir bölümünü oluşturur ve web sitenizin üzerinde önemli bir etkiye sahip olabilir.
Next.js Image bileşeni, HTML <img>
öğesini otomatik görüntü optimizasyonuna yönelik özelliklerle genişletir:
Boyut Optimizasyonu: WebP ve AVIF gibi modern görüntü formatlarını kullanarak her cihaz için otomatik olarak doğru boyutta görüntüler sunun.
Görsel Kararlılık: Görüntüler yüklenirken düzen kaymasını otomatik olarak önleyin.
Daha Hızlı Sayfa Yüklemeleri: Görüntüler, isteğe bağlı bulanıklaştırma yer tutucuları ile yerel tarayıcıda lazy loading kullanılarak yalnızca görüntü alanına girdiklerinde yüklenir.
Varlık Esnekliği: Uzak sunucularda depolanan görüntüler için bile isteğe bağlı görüntü yeniden boyutlandırma
İzleyin: → next/image
nasıl kullanacağınız hakkında daha fazla bilgi edinin (9 dakika).
Daha sonra resminiz için src
tanımlayabilirsiniz (yerel veya uzak).
Yerel bir görüntü kullanmak için .jpg
, .png
veya .webp
görüntü dosyalarınızı içe aktarın.
Next.js, içe aktarılan dosyaya göre resminizin width
ve height
niteliklerini otomatik olarak belirleyecektir. Bu değerler, resminiz yüklenirken Kümülatif Düzen Kaymasını önlemek için kullanılır.
Uyarı: Dinamik await import()
veya require()
desteklenmez. Derleme zamanında analiz edilebilmesi için içe aktarma statik olmalıdır.
Uzak bir görüntü kullanmak için src
özelliği bir URL dizesi olmalıdır.
Next.js'nin derleme işlemi sırasında uzak dosyalara erişimi olmadığından, genişlik
, yükseklik
ve isteğe bağlı blurDataURL
desteklerini manuel olarak sağlamanız gerekir.
width
ve height
nitelikleri, görüntünün doğru en boy oranını çıkarmak ve görüntünün yüklenmesinden kaynaklanan düzen kaymasını önlemek için kullanılır. width
ve height
, görüntü dosyasının işlenen boyutunu belirlemez.
Görüntülerin optimize edilmesine güvenli bir şekilde izin vermek için next.config.js
dosyasında desteklenen URL kalıplarının bir listesini tanımlayın. Kötü amaçlı kullanımı önlemek için mümkün olduğunca spesifik olun. Örneğin, aşağıdaki yapılandırma yalnızca belirli bir AWS S3 kovasından gelen görüntülere izin verecektir:
Bazen uzaktaki bir görüntüyü optimize etmek, ancak yine de yerleşik Next.js Görüntü Optimizasyon API'sini kullanmak isteyebilirsiniz. Bunu yapmak için, yükleyiciyi varsayılan ayarında bırakın ve Image src
prop için mutlak bir URL girin.
Uygulamanızı kötü niyetli kullanıcılardan korumak için next/image
bileşeniyle kullanmayı düşündüğünüz uzak ana bilgisayar adlarının bir listesini tanımlamanız gerekir.
Daha önceki örnekte, uzaktaki bir görüntü için kısmi bir URL ("/me.png"
) sağlandığına dikkat edin. Bu, yükleyici mimarisi nedeniyle mümkündür.
Next.js uygulamaları için varsayılan yükleyici, web üzerindeki herhangi bir yerden gelen görüntüleri optimize eden ve ardından bunları doğrudan Next.js web sunucusundan sunan yerleşik Görüntü Optimizasyon API'sini kullanır. Görüntülerinizi doğrudan bir CDN'den veya görüntü sunucusundan sunmak isterseniz, birkaç satır JavaScript ile kendi yükleyici işlevinizi yazabilirsiniz.
Loader
prop ile görüntü başına veya loaderFile
yapılandırması ile uygulama düzeyinde bir yükleyici tanımlayabilirsiniz.
LCP öğesi genellikle sayfanın görüntü alanı içinde görünen en büyük resim veya metin bloğudur. Next dev
'i çalıştırdığınızda, LCP öğesi priority
özelliği olmayan bir <Image>
ise bir konsol uyarısı görürsünüz.
LCP görüntüsünü belirledikten sonra, özelliği aşağıdaki gibi ekleyebilirsiniz:
next/image
iyi performans sonuçlarını garanti etmek için tasarlandığından, düzen kaymasına katkıda bulunacak şekilde kullanılamaz ve üç yoldan biriyle boyutlandırılmalıdır:
Açıkça, bir width
ve height
niteliği ekleyerek
Resimlerimin boyutunu bilmiyorsam ne yapmalıyım?
Görüntülerin boyutları hakkında bilgi sahibi olmadığınız bir kaynaktan görüntülere erişiyorsanız, yapabileceğiniz birkaç şey vardır:
fill
kullanın
Görüntülerinizi normalleştirin
Görüntüleri kontrol ettiğiniz bir kaynaktan sunuyorsanız, görüntüleri belirli bir boyuta normalleştirmek için görüntü işlem hattınızı değiştirmeyi düşünün.
API çağrılarınızı değiştirin
Uygulamanız bir API çağrısı kullanarak görüntü URL'lerini alıyorsa (örneğin bir CMS'ye), URL ile birlikte görüntü boyutlarını da döndürmek için API çağrısını değiştirebilirsiniz.
Resimlerinizi boyutlandırmak için önerilen yöntemlerden hiçbiri işe yaramazsa, next/image
bileşeni standart <img>
öğeleriyle birlikte bir sayfada iyi çalışacak şekilde tasarlanmıştır.
Image bileşenini şekillendirmek normal bir <img>
öğesini şekillendirmeye benzer, ancak akılda tutulması gereken birkaç yönerge vardır:
className
veya style
kullanın, styled-jsx
değil.
Çoğu durumda className
özelliğini kullanmanızı öneririz. Bu, içe aktarılmış bir CSS Modülü, global bir stil sayfası vb. olabilir.
Satır içi stilleri atamak için style
özelliğini de kullanabilirsiniz.
styled-jsx'i kullanamazsınız çünkü geçerli bileşene kapsamlıdır (stili global
olarak işaretlemediğiniz sürece).
fill
kullanırken, parent elementinin position: relative
değerine sahip olması gerekir
Bu, görüntü öğesinin söz konusu düzen modunda düzgün bir şekilde oluşturulması için gereklidir.
fill
kullanıldığında, parent element display: block
özelliğine sahip olmalıdır
Bu, <div>
öğeleri için varsayılandır ancak aksi belirtilmelidir.
yapılandırması hakkında daha fazla bilgi edinin. Resim src
için göreli URL'ler kullanmak istiyorsanız, bir kullanın.
Yükleyici, resminiz için URL'ler oluşturan bir işlevdir. Sağlanan src
'yi değiştirir ve görüntüyü farklı boyutlarda istemek için birden çok URL oluşturur. Bu çoklu URL'ler otomatik oluşturmada kullanılır, böylece sitenize gelen ziyaretçilere görüntü alanları için doğru boyutta bir resim sunulur.
Her sayfa için öğesi olacak görüntüye priority
özelliğini eklemelisiniz. Bunu yapmak Next.js'nin yükleme için görüntüye özel olarak öncelik vermesini sağlar (örneğin, ön yükleme etiketleri veya öncelik ipuçları aracılığıyla) ve LCP'de anlamlı bir artışa yol açar.
priority
hakkında daha fazla bilgi edinin.
Görüntülerin performansa en çok zarar verdiği yollardan biri, görüntünün yüklenirken sayfadaki diğer öğeleri ittiği düzen kaymasıdır. Bu performans sorunu kullanıcılar için o kadar can sıkıcıdır ki adı verilen kendi Core Web Vital'ine sahiptir. Görsel tabanlı düzen kaymalarını önlemenin yolu, . Bu, tarayıcının yüklemeden önce görüntü için tam olarak yeterli alan ayırmasını sağlar.
kullanarak otomatik olarak
Dolaylı olarak, görüntünün ana öğesini dolduracak şekilde genişlemesine neden olan kullanılarak.
fill
özelliği, resminizin ana öğesi tarafından boyutlandırılmasını sağlar. Herhangi bir medya sorgusu kesme noktasıyla eşleşecek şekilde boyutlar prop'u boyunca görüntünün üst öğesine sayfada alan vermek için CSS kullanmayı düşünün. Ayrıca görüntünün bu alanı nasıl kullanacağını tanımlamak için ile fill
, contain
veya cover
ve kullanabilirsiniz.
Çeşitli stillerle kullanılan Görüntü bileşeni örnekleri için 'na bakın.
next/image
bileşeni ve Next.js Görüntü Optimizasyon API'si yapılandırılabilir. Bu yapılandırmalar, , , ve daha fazlasına olanak tanır.