Node.js uygulamalarında performans ve verimlilik açısından önemli bir konu olan modül önbelleğe alma (module caching) konseptini bu makalede ele alacağız. Özellikle, modüllerin nasıl önbelleğe alındığını ve bu özelliğin uygulamalara nasıl etki ettiğini inceleyeceğiz.
Node.js'de bir modül ilk kez require
ile çağrıldığında, modülün içeriği yüklenir ve önbelleğe alınır. Bu, modül tekrar çağrıldığında, Node.js'in daha önce önbelleğe alınan sürümü kullanmasını sağlar. Bu durum, modülün her seferinde yeniden yüklenmesini engeller, böylece performansı artırır.
Örneğin, super-hero.js
adında bir modül oluşturup, bu modülde bir sınıf tanımlayıp, bu sınıfın bir örneğini dışa aktaralım. index.js
dosyasında bu modülü require
ile içe aktardığımızda ve modülün bir özelliğini değiştirdiğimizde, bu değişiklik modülün önbelleğe alınmış sürümünde de yansır.
// super-hero.js
class SuperHero {
constructor(name) {
this.name = name;
}
getName() {
return this.name;
}
setName(name) {
this.name = name;
}
}
module.exports = new SuperHero("Batman");
// index.js
const superHero = require('./super-hero');
console.log(superHero.getName()); // Batman
superhero.setName("Superman");
console.log(superHero.getName()); // Superman
const newSuperHero = require('./super-hero');
console.log(newSuperHero.getName()); // Superman
Bu örnekte, super-hero
modülünün name
özelliği "Batman" olarak başlar, daha sonra "Superman" olarak değiştirilir. newSuperHero
ile modülü yeniden içe aktardığımızda, değiştirilmiş "Superman" ismini alırız. Bu, modülün önbelleğe alındığının ve aynı örneğin kullanıldığının bir göstergesidir.
Modül önbelleğe alma, performans açısından yararlı olsa da, bazı durumlarda farklı modül örnekleri oluşturmak isteyebiliriz. Bunu başarmak için, sınıfı doğrudan dışa aktarabilir ve her require
çağrısında yeni bir örnek oluşturabiliriz.
// superhero.js güncellenmiş versiyonu
module.exports = SuperHero;
// index.js güncellenmiş versiyonu
const SuperHero = require('./super-hero');
const batman = new SuperHero("Batman");
const superman = new SuperHero("Superman");
Bu yaklaşımla, her new SuperHero()
çağrısında yeni bir örnek oluştururuz, böylece her biri bağımsız olarak yönetilebilir.
Node.js'de modüller, ilk yüklenmelerinde önbelleğe alınır. Bu, modülün yeniden kullanılmasını kolaylaştırır ve performansı artırır.
Modül önbelleğe alma, aynı modülün farklı örneklerinin ihtiyaç duyulduğu durumlarda yönetilmesi gereken bir durumdur.
Farklı modül örnekleri oluşturmak istendiğinde, sınıfı veya fonksiyonu dışa aktarıp her seferinde yeni bir örnek oluşturmak mümkündür.
Modül önbelleğe almanın doğru kullanımı, Node.js uygulamalarının performansını ve esnekliğini artırır.
Bu makalede, Node.js'de modül önbelleğe almanın nasıl çalıştığı ve uygulamalar üzerindeki etkileri hakkında temel bilgileri ele aldık. Bu konseptin anlaşılması, Node.js uygulamalarını daha etkin bir şekilde geliştirmek için önemlidir.