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
반응형