0

0

重要的JS缓存机制概念:了解普及五个知识点

王林

王林

发布时间:2024-01-23 09:52:12

|

2436人浏览过

|

来源于php中文网

原创

知识普及:了解js缓存机制的五个重要概念

知识普及:了解JS缓存机制的五个重要概念,需要具体代码示例

在前端开发中,JavaScript(JS)缓存机制是一个非常关键的概念。理解和正确运用缓存机制可以极大地提升网页的加载速度和性能。本文将介绍JS缓存机制的五个重要概念,并提供相应的代码示例。

一、浏览器缓存

浏览器缓存是指在第一次访问网页时,浏览器会将网页的相关资源(例如JS文件、CSS文件、图片等)保存到本地缓存中。当再次访问同一网页时,浏览器会从缓存中加载资源,而不是重新下载资源。这样可以减少网络请求,提高页面加载速度。

代码示例:

MusicLM
MusicLM

谷歌平台的AI作曲工具,用文字生成音乐

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

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

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

二、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('加载新数据');
  }
};

三、文件指纹

文件指纹是指通过对文件内容进行哈希运算生成的一串唯一标识符,用于判断文件内容是否发生变化。在浏览器请求文件时,可以将文件指纹作为查询参数或文件名的一部分,从而实现缓存更新。

代码示例:

// 生成文件指纹
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);

四、缓存策略

缓存策略是指根据资源的更新频率和重要性来确定缓存的有效期和更新策略。常见的缓存策略有强缓存和协商缓存。强缓存是直接从缓存中加载资源,而协商缓存是与服务器交互判断资源是否可用。

代码示例:

// 设置强缓存
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);
}

五、缓存更新

在开发中,经常会遇到更新了静态资源但用户浏览器中仍然加载旧资源的问题。为了解决这个问题,可以使用缓存更新的方法,例如添加版本号、修改文件指纹等。通过更新缓存的方式,可以保证用户在访问页面时始终加载最新的资源。

代码示例:

// 添加版本号
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缓存机制,为用户提供更好的网页体验。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

287

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

258

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

124

2025.08.07

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

514

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5319

2023.08.17

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.6万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号