Edge and Node.js Runtimes
Next.js bağlamında çalışma zamanı, yürütme sırasında kodunuz tarafından kullanılabilen kütüphaneler, API'ler ve genel işlevsellik kümesini ifade eder.
Sunucuda, uygulama kodunuzun parçalarının işlenebileceği iki çalışma zamanı vardır:
- Node.js Çalışma Zamanı (varsayılan), ekosistemdeki tüm Node.js API'lerine ve uyumlu paketlere erişime sahiptir.
- Edge Çalışma Zamanı Web API'lerini temel alır.
Runtime Differences
Bir çalışma zamanı seçerken dikkat edilmesi gereken birçok husus vardır. Bu tablo bir bakışta önemli farklılıkları göstermektedir. Farklılıkların daha derinlemesine bir analizini istiyorsanız, aşağıdaki bölümlere göz atın.
Node | Serverless | Edge | |
---|---|---|---|
Cold Boot | / | Normal | Low |
HTTP Streaming | Yes | Yes | Yes |
IO | All | All | fetch |
Scalability | / | High | Highest |
Security | Normal | High | High |
Latency | Normal | Low | Lowest |
npm Packages | All | All | A smaller subset |
Static Rendering | Yes | Yes | No |
Dynamic Rendering | Yes | Yes | Yes |
Data Revalidation w/ fetch | Yes | Yes | Yes |
Edge Runtime
Next.js'de hafif Edge Runtime, mevcut Node.js API'lerinin bir alt kümesidir.
Küçük, basit işlevlerle düşük gecikme süresinde dinamik, kişiselleştirilmiş içerik sunmanız gerekiyorsa Edge Runtime idealdir. Edge Runtime'ın hızı minimum kaynak kullanımından gelir, ancak bu birçok senaryoda sınırlayıcı olabilir.
Örneğin, Vercel'de Edge Runtime'da yürütülen kod 1 MB ile 4 MB arasını geçemez, bu sınır içe aktarılan paketleri, yazı tiplerini ve dosyaları içerir ve dağıtım altyapınıza bağlı olarak değişir.
Node.js Runtime
Node.js çalışma zamanını kullanmak, tüm Node.js API'lerine ve bunlara dayanan tüm npm paketlerine erişmenizi sağlar. Ancak, başlatılması Edge çalışma zamanını kullanan rotalar kadar hızlı değildir.
Next.js uygulamanızı bir Node.js sunucusuna dağıtmak, altyapınızı yönetmeyi, ölçeklendirmeyi ve yapılandırmayı gerektirecektir. Alternatif olarak, Next.js uygulamanızı Vercel gibi sunucusuz bir platforma dağıtmayı düşünebilirsiniz; bu platform bunu sizin için halledecektir.
Serverless Node.js
Edge Runtime'dan daha karmaşık hesaplama yüklerini kaldırabilecek ölçeklenebilir bir çözüme ihtiyacınız varsa Sunucusuz idealdir. Örneğin Vercel'de Sunucusuz İşlevler ile genel kod boyutunuz içe aktarılan paketler, yazı tipleri ve dosyalar dahil olmak üzere 50 MB 'dir.
Edge kullanan rotalara kıyasla dezavantajı, Sunucusuz İşlevlerin istekleri işlemeye başlamadan önce önyükleme yapmasının yüzlerce milisaniye sürebilmesidir. Sitenizin aldığı trafik miktarına bağlı olarak, işlevler sık sık "sıcak" olmadığından bu sık karşılaşılan bir durum olabilir.
Examples
Segment Runtime Option
Next.js uygulamanızda tek tek rota segmentleri için bir çalışma zamanı belirleyebilirsiniz. Bunu yapmak için runtime
adında bir değişken tanımlayın ve dışa aktarın. Değişken bir dize olmalı ve 'nodejs'
ya da 'edge'
çalışma zamanı değerine sahip olmalıdır.
Aşağıdaki örnekte, runtime
adresini 'edge'
değeriyle dışa aktaran bir sayfa yolu segmenti gösterilmektedir:
export const runtime = 'edge' // 'nodejs' (default) | 'edge'
Ayrıca runtime
adresini düzen düzeyinde tanımlayabilirsiniz; bu, düzen altındaki tüm rotaların edge çalışma zamanında çalışmasını sağlar:
export const runtime = 'edge' // 'nodejs' (default) | 'edge'
Segment çalışma zamanı ayarlanmazsa, varsayılan nodejs
çalışma zamanı kullanılacaktır. Node.js çalışma zamanından değiştirmeyi planlamıyorsanız runtime
seçeneğini kullanmanıza gerek yoktur.
Mevcut API'lerin tam listesi için lütfen Node.js Doc s ve Edge Docs 'a bakın. Her iki çalışma zamanı da dağıtım altyapınıza bağlı olarak akışı destekleyebilir.