Backend/Node.js

Module 캐싱

min' 2024. 12. 14. 23:52
728x90
반응형

- Module 캐싱이란?

module에서 다른 module을 가져올 때 캐싱(caching)이 일어나게 된다.

module 하나를 여러 번 가져와 사용하더라도 module을 그때마다 새롭게 가져오지 않는다.

module을 한 번 가져와 사용하는 순간 캐싱이 되기 때문이다.

 

// request.js

const { read } = require("./response.js");

function encrypt(data) {
  return "encrypted data";
}

function send(url, data) {
  const encryptedData = encrypt(data);
  console.log(`${encryptedData} is being sent to ${url}`);
}
module.exports = { send };
// response.js

function decrypt(data) {
  return "decrypted data";
}

function read() {
  return decrypt("data");
}

console.log("We are in the response module");

module.exports = { read, decrypt };
// https.js

const request = require("./request.js");
const response = require("./response.js");

function makeRequest(url, data) {
  // 요청을 보내기
  request.send(url, data);
  // 복호화한 결과 데이터를 return 하기
  return response.read();
}

const responseData = makeRequest("https://naver.com", "any data");

 

각각 response.js의 module을 request.js와 https.js로 가져왔을 때,

두 번 가져왔으니 콘솔에 "We are in the response module"이 두 번 찍혀야 할 것 같지만,

이미 한 번 load(module에 다른 module을 가져오는)한 것을 캐싱하고 있어 콘솔에 딱 한 번 찍히게 된다.

 

https.js에서 console.log(require.cache);를 해보면 

이렇게 여러 가지 Module들이 나오는 것을 볼 수 있다.

이미 한 번이라도 다른 곳에서 가져다 사용한 module들은 loaded : true라고 뜨게 된다.

728x90
반응형