>  기사  >  웹 프론트엔드  >  중요한 JS 캐싱 메커니즘 개념: 5가지 지식 포인트 이해 및 대중화

중요한 JS 캐싱 메커니즘 개념: 5가지 지식 포인트 이해 및 대중화

王林
王林원래의
2024-01-23 09:52:12781검색

중요한 JS 캐싱 메커니즘 개념: 5가지 지식 포인트 이해 및 대중화

지식 대중화: JS 캐싱 메커니즘의 다섯 가지 중요한 개념을 이해하려면 구체적인 코드 예제가 필요합니다.

프론트 엔드 개발에서 JavaScript(JS) 캐싱 메커니즘은 매우 핵심 개념입니다. 캐싱 메커니즘을 이해하고 올바르게 적용하면 웹 페이지의 로딩 속도와 성능이 크게 향상될 수 있습니다. 이 기사에서는 JS 캐싱 메커니즘의 다섯 가지 중요한 개념을 소개하고 해당 코드 예제를 제공합니다.

1. 브라우저 캐시

브라우저 캐시는 웹페이지를 처음 방문할 때 브라우저가 웹페이지의 관련 리소스(예: JS 파일, CSS 파일, 이미지 등)를 로컬 캐시에 저장한다는 의미입니다. . 동일한 웹페이지에 다시 액세스하면 브라우저는 리소스를 다시 다운로드하는 대신 캐시에서 리소스를 로드합니다. 이렇게 하면 네트워크 요청이 줄어들고 페이지 로딩 속도가 향상됩니다.

코드 예:

// 设置缓存
localStorage.setItem('name', 'John');

// 读取缓存
let name = localStorage.getItem('name');
console.log(name); // 输出:John

// 清除缓存
localStorage.removeItem('name');

2. HTTP 캐싱

HTTP 캐싱은 HTTP 프로토콜을 기반으로 하는 캐싱 메커니즘을 나타냅니다. 브라우저가 요청을 보내면 서버는 응답 헤더에 캐시 제어 필드를 설정하여 리소스를 캐시할지 여부를 브라우저에 지시할 수 있습니다. 일반적인 캐시 제어 필드에는 Cache-ControlExpires가 포함됩니다.

코드 예:

// 使用协商缓存
let request = new XMLHttpRequest();
request.open('GET', 'https://example.com/api/data', true);
request.setRequestHeader('If-None-Match', 'xyz'); // 设置ETag
request.send();

request.onload = function() {
  if (request.status === 304) {
    // 从缓存中加载资源
    console.log('加载缓存数据');
  } else {
    // 第一次加载数据
    console.log('加载新数据');
  }
};

3. 파일 지문

파일 지문은 파일 내용을 해싱하여 생성된 고유 식별자 문자열을 말하며, 파일 내용이 변경되었는지 확인하는 데 사용됩니다. 브라우저가 파일을 요청할 때 쿼리 매개변수 또는 파일 이름의 일부로 파일 지문을 사용하여 캐시 업데이트를 수행할 수 있습니다.

코드 예:

// 生成文件指纹
const fileContent = 'console.log("Hello, world!")';
const fileHash = md5(fileContent);

// 文件加载时添加文件指纹
const script = document.createElement('script');
script.src = `https://example.com/js/app-${fileHash}.js`;
document.body.appendChild(script);

4. 캐싱 전략

캐싱 전략이란 리소스의 업데이트 빈도와 중요도를 기반으로 캐시의 유효 기간과 업데이트 전략을 결정하는 것을 말합니다. 일반적인 캐싱 전략에는 강력한 캐싱과 협상된 캐싱이 포함됩니다. 강력한 캐싱은 캐시에서 직접 리소스를 로드하는 반면, 협상 캐싱은 서버와 상호 작용하여 리소스를 사용할 수 있는지 확인합니다.

코드 샘플:

// 设置强缓存
res.setHeader('Cache-Control', 'max-age=3600'); // 缓存有效期为1小时
res.setHeader('Expires', new Date(Date.now() + 3600 * 1000).toUTCString());

// 设置协商缓存
res.setHeader('ETag', 'xyz'); // 设置ETag
res.setHeader('Last-Modified', new Date().toUTCString()); // 设置Last-Modified

// 判断缓存是否可用
if (req.headers['if-none-match'] === 'xyz' && req.headers['if-modified-since'] === lastModified) {
  res.writeHead(304); // 缓存可用,返回304
  res.end();
} else {
  res.writeHead(200); // 返回新资源
  res.end(fileContent);
}

5. 캐시 업데이트

개발 중에 정적 리소스는 업데이트되지만 이전 리소스는 여전히 사용자 브라우저에 로드되는 문제에 자주 직면합니다. 이 문제를 해결하기 위해 버전 번호 추가, 파일 핑거프린트 수정 등과 같은 캐시 업데이트 방법을 사용할 수 있습니다. 캐시를 업데이트하면 사용자가 페이지에 액세스할 때 항상 최신 리소스를 로드하도록 할 수 있습니다.

코드 샘플:

// 添加版本号
const script = document.createElement('script');
script.src = `https://example.com/js/app?v=1.0`;
document.body.appendChild(script);

// 修改文件指纹
const fileContent = 'console.log("Hello, world!")';
const fileHash = md5(`${fileContent}${newData}`);
const script = document.createElement('script');
script.src = `https://example.com/js/app-${fileHash}.js`;
document.body.appendChild(script);

요약

JS 캐싱 메커니즘의 다섯 가지 중요한 개념을 이해하면 웹 페이지 성능을 더 잘 최적화하는 데 도움이 될 수 있습니다. 브라우저 캐싱, HTTP 캐싱, 파일 핑거프린팅, 캐싱 정책 및 캐시 업데이트와 같은 기술적 수단을 통해 웹 페이지의 로딩 속도를 향상시키고 서버 부하를 줄이며 사용자 경험을 향상시킬 수 있습니다.

다른 시나리오와 요구 사항에는 다른 캐싱 전략이 필요할 수 있다는 점에 유의해야 합니다. 따라서 실제 개발에서는 특정 상황에 따라 적절한 캐싱 메커니즘을 선택하고 성능 테스트 및 최적화를 수행해야 합니다. 지속적인 학습과 연습을 통해서만 JS 캐싱 메커니즘을 마스터하고 사용하여 사용자에게 더 나은 웹 페이지 경험을 제공할 수 있습니다.

위 내용은 중요한 JS 캐싱 메커니즘 개념: 5가지 지식 포인트 이해 및 대중화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.