JS缓存机制的五个关键要点总结

知识大盘点:js缓存机制中的五个关键要点

知识大盘点:JS缓存机制中的五个关键要点,需要具体代码示例

导语:在前端开发中,缓存是提高网页性能的重要一环。JavaScript缓存机制是指将已经获取的资源保存在本地,以便在后续的访问中能够直接使用缓存,从而减少资源加载时间和网络带宽的消耗。本文将介绍JS缓存机制中的关键要点,并提供具体的代码示例。

一、缓存类型

强缓存

强缓存是指通过设置HTTP响应头中的Expires或Cache-Control字段来实现的缓存机制。当浏览器请求一个资源时,会先检查该资源在本地是否存在缓存,如果存在且仍在有效期内,则直接使用缓存,不再发送请求。

示例代码:

// 设置缓存时间为1个小时res.setHeader('Cache-Control', 'max-age=3600');

协商缓存

协商缓存是通过设置HTTP请求头中的If-Modified-Since或If-None-Match字段来与服务器进行通信的缓存机制。当浏览器请求一个资源时,会先发送请求到服务器,服务器根据请求头中的字段和资源的最后修改时间进行比较,如果资源未发生变化,则返回状态码304 Not Modified,并通知浏览器使用本地缓存。

示例代码:

// 获取请求头中的If-Modified-Since字段const ifModifiedSince = req.headers['if-modified-since'];// 获取资源的最后修改时间const lastModified = fs.statSync(filepath).mtime.toUTCString();// 比较请求头中的字段与最后修改时间if (ifModifiedSince === lastModified) {  res.statusCode = 304; // Not Modified  res.end();} else {  res.setHeader('Last-Modified', lastModified);  // 返回资源  res.end(file);}

二、缓存位置

浏览器缓存

浏览器缓存是指缓存在浏览器本地的缓存文件。当浏览器访问同一资源时,会先检查该资源是否存在缓存文件,如果存在则直接使用缓存,否则发送网络请求。

示例代码:

// 读取缓存const cache = localStorage.getItem('cache');// 判断缓存是否存在if (cache) {  // 使用缓存} else {  // 发送网络请求}

服务器缓存

服务器缓存是指缓存在服务器端的缓存文件。当浏览器请求一个资源时,服务器会检查该资源是否存在缓存文件,如果存在则直接返回缓存文件。

示例代码:

// 判断文件是否存在if (fs.existsSync(filepath)) {  // 返回缓存文件} else {  // 发送网络请求}

三、缓存时间控制

缓存时间

缓存时间是指强缓存或协商缓存的有效期时间,可以根据需求设置不同的缓存时间。

BibiGPT-哔哔终结者 BibiGPT-哔哔终结者

B站视频总结器-一键总结 音视频内容

BibiGPT-哔哔终结者 28 查看详情 BibiGPT-哔哔终结者

示例代码:

// 设置缓存时间为1个小时res.setHeader('Cache-Control', 'max-age=3600');

缓存策略

缓存策略是指根据资源类型或资源路径设置不同的缓存策略。可以使用正则表达式或字符串匹配来实现不同的缓存策略。

示例代码:

// 设置图片资源的缓存时间为1个月if (req.url.match(/.jpg|.png|.gif$/)) {  res.setHeader('Cache-Control', 'max-age=2592000');}

四、缓存更新

版本控制

版本控制是指在请求资源时添加版本号,当资源发生改变时更新版本号。通过更新版本号可以强制浏览器重新加载资源。

示例代码:

强制刷新

强制刷新是指通过设置Cache-Control字段的max-age为0来告诉浏览器立即更新缓存。

示例代码:

// 强制刷新缓存res.setHeader('Cache-Control', 'max-age=0');

五、缓存清除

缓存清除是指手动删除浏览器本地的缓存文件或服务器端的缓存文件。

示例代码:

// 清除浏览器缓存localStorage.removeItem('cache');// 清除服务器缓存fs.unlinkSync(filepath);

总结:对于前端开发中常见的JS缓存机制,我们介绍了五个关键要点,涉及的内容包括缓存类型、缓存位置、缓存时间控制、缓存更新和缓存清除。掌握这些关键要点能够帮助我们更好地理解和应用缓存机制,提升网页性能,提升用户体验。希望通过本文的介绍,能够对各位读者有所帮助。

以上就是JS缓存机制的五个关键要点总结的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/502235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Laravel进阶学习之基于reset实现分布式事务
上一篇 2025年11月8日 20:55:30
Windows电脑如何禁止远程连接?先来两种方法
下一篇 2025年11月8日 20:55:40

相关推荐

  • sublime的session文件是做什么用的_sublime会话文件作用与恢复机制

    sublime的session文件是做什么用的_sublime会话文件作用与恢复机制sublime的session文件是做什么用的_sublime会话文件作用与恢复机制sublime的session文件是做什么用的_sublime会话文件作用与恢复机制sublime的session文件是做什么用的_sublime会话文件作用与恢复机制

    Sublime Text的session文件记录了打开的文件、光标位置、代码折叠状态、窗口布局及未保存内容等信息,位于系统特定目录下的Local文件夹中,以JSON格式存储,通过自动保存机制在重启后恢复编辑状态。 Sublime Text 的 session 文件主要用于保存用户当前编辑环境的状态信…

    2026年9月24日 用户投稿
    000
  • VSCode的扩展设置是全局的还是局部的?

    VSCode扩展设置默认全局生效,存储于用户配置文件中,但部分扩展如ESLint、Prettier和Python支持项目级局部配置,通过在项目根目录的.vscode/settings.json文件中定义,可覆盖全局设置;在设置界面中,齿轮图标表示可被工作区覆盖,锁图标表示仅限全局修改,用户可根据需求…

    2026年9月24日
    200
  • PHP实时输出如何防止XSS攻击_PHP实时输出安全防范XSS攻击

    防止XSS攻击需坚持三重防护:首先对用户输入进行严格验证与白名单过滤,使用filter_var等函数校验数据格式;其次根据输出上下文进行恰当转义——HTML正文和属性用htmlspecialchars(),JavaScript变量用json_encode(),URL参数用urlencode();最后…

    2026年9月24日
    100
  • Java中接口常量和类常量的使用区别

    接口常量默认public static final,用于行为契约但易导致职责模糊;类常量可用不同访问修饰符,更适合封装和维护。现代Java推荐使用专用常量类、枚举、私有静态常量或配置文件管理常量,以提升代码清晰度与可维护性。 Java中接口常量和类常量,核心区别在于它们的定义位置和隐式属性。接口常量…

    2026年9月24日
    000
  • 处理PHP多线程的定时任务并行_优化php多线程怎么实现的定时任务执行

    PHP可通过多进程、消息队列等方式实现定时任务并行处理。1. 使用pthreads扩展(需ZTS支持)可在CLI环境实现多线程,但部署复杂;2. 利用pcntl_fork创建子进程是推荐方案,通过fork多个进程并行执行任务,适合CLI模式;3. 通过crontab同时触发多个独立脚本或使用exec…

    2026年9月24日
    200
  • php数据如何实现文件断点续传_php数据大文件上传解决方案

    断点续传通过文件分片、唯一hash标识、服务端记录上传状态实现,前端切片上传并查询已传分片,PHP后端存储分片并在完成后合并,同时提供状态接口支持续传,需注意hash一致性与临时文件清理。 大文件上传在Web开发中是个常见需求,尤其是涉及视频、备份文件或资源包时。PHP本身对文件上传有一定限制,但通…

    2026年9月24日
    000
  • VS Code工作台UI:自定义CSS与视图容器配置

    可通过扩展和配置自定义VS Code UI:1. 使用Custom CSS and JS Loader注入CSS修改外观,但有风险;2. 推荐创建Color Theme扩展,通过JSON定义主题颜色;3. 利用viewsContainers在活动栏添加自定义容器;4. 用户可设置view.locat…

    2026年9月24日
    000
  • PHP 中如何将 JSON 数组值声明为变量

    本文介绍了如何在 PHP 中从数据库获取数据并将其编码为 JSON 格式,然后通过 AJAX 请求传递到另一个页面。重点讲解了如何在接收页面解析 JSON 数据,并将 JSON 数组中的特定值提取并赋值给变量,以便在后续的 PHP 函数中使用。 从数据库获取数据并编码为 JSON 首先,我们需要从数…

    2026年9月24日
    000
  • Spring Boot 测试中 403 错误排查与安全配置优化

    本文旨在解决 Spring Boot 控制器层测试中常见的 403 Forbidden 错误,特别是当安全配置限制了访问权限时。文章将深入分析 WebSecurityConfig 和 @WithMockUser 的使用,提供两种主要解决方案:通过临时放松安全限制进行测试,以及确保角色/权限配置的正确…

    2026年9月24日
    100
  • VS Code微服务开发:Docker与Kubernetes集成

    VS Code通过Docker扩展实现本地容器化开发,支持自动生成Dockerfile、一键构建镜像及devcontainer环境一致性;2. Kubernetes扩展可连接集群并管理资源,结合Bridge to Kubernetes实现本地调试与集群网络集成;3. 使用Skaffold自动化构建部…

    2026年9月24日
    100
  • 使用正则表达式从JSON数组中提取JSON对象

    本文旨在提供一种使用Java正则表达式从包含多个JSON对象的JSON数组中提取单个JSON对象的方法。我们将详细介绍如何构建合适的正则表达式,并提供示例代码演示如何在Java中使用该表达式来实现JSON对象的提取,并对提取后的字符串进行优化处理,移除不必要的空白字符。 从JSON数组中提取JSON…

    2026年9月24日
    000
  • 数据实时迁移同步工具 CloudCanal v5.2.0.0 发布,支持 SaaS 全托管

    cloudcanal 免费社区版 是 clougence 公司推出的一款全自研、可视化、自动化数据迁移同步工具,具备 结构迁移、数据迁移、数据同步、数据校验、数据订正 等功能,支持 60+ 款流行关系型数据库、实时数仓、消息中间件、缓存数据库和搜索引擎之间数据互通,其中包含国产数据库 oceanba…

    2026年9月24日
    100
  • 使用 PHP 解析 JSON 文件并在网页上显示特定数据

    本文旨在帮助开发者学习如何使用 PHP 解析 JSON 文件,并提取其中的特定数据,将其以结构化的方式展示在网页上。我们将通过一个简单的示例,演示如何读取 JSON 数据,解析成 PHP 数组,并最终以 HTML 表格的形式呈现。 PHP 解析 JSON 数据 JSON (JavaScript Ob…

    2026年9月24日
    200
  • JavaScript 中替换 JSON 数据值的实用指南

    本文旨在提供一个清晰、简洁的 JavaScript 教程,讲解如何根据特定条件,利用响应数据中的值替换 JSON 数据中的指定字段。我们将通过实例代码演示如何处理包含 “All” 值的 Emp_Id 字段,并使用响应数据中的 ID 值进行替换,最终生成期望的 JSON 数据结…

    2026年9月24日
    200
  • laravel API资源类怎么格式化JSON输出_laravel API资源类JSON格式化教程

    使用 Laravel API 资源类可统一 JSON 返回格式,通过 make:resource 创建资源类,在 toArray 中定义字段,控制器中返回 new UserResource($user) 或 UserResource::collection() 实现数据结构化输出。 如果您在使用 L…

    2026年9月23日
    400
  • VSCode主题开发:创建动态色彩主题的进阶技术解析

    动态主题需通过外部插件监听系统事件实现,核心是利用vscode.themeColor API响应主题切换,结合语义化作用域与Semantic Highlighting精准控制配色逻辑,实现智能自适应视觉体验。 想让VSCode主题随环境自动切换色彩?动态主题不只是换个配色那么简单。核心在于理解VSC…

    2026年9月23日
    400
  • VS Code自动化测试:持续集成与测试覆盖率

    VS Code通过插件和工具集成支持自动化测试、CI流程与覆盖率分析。①配置Jest或pytest等框架,结合Test Explorer UI插件实现测试运行与调试;②利用GitHub Actions等CI服务,在代码推送后自动执行测试,通过插件在编辑器内查看状态;③启用Coverage Gutte…

    2026年9月23日
    100
  • 如何在mysql中使用连接池提升并发

    连接池通过复用数据库连接减少开销,提升高并发下系统性能;需根据语言选择HikariCP、SQLAlchemy等组件,合理配置最大连接数、空闲连接等参数,并结合数据库优化与监控调优以充分发挥效果。 在高并发场景下,频繁创建和销毁数据库连接会带来显著的性能开销。MySQL本身不直接提供连接池功能,但可以…

    2026年9月23日
    300
  • Java中利用正则表达式高效提取JSON数组中的独立对象

    本文探讨了如何使用Java的Pattern和Matcher配合正则表达式,从格式化的JSON数组字符串中精确提取出每个独立的JSON对象字符串。文章详细解析了核心正则表达式的工作原理及其对格式的依赖性,并提供了完整的Java代码示例,同时强调了在实际应用中处理JSON的注意事项和更健壮的替代方案。 …

    2026年9月23日
    600
  • 在PHP中将JSON数组值声明为变量

    本文介绍了如何在PHP中从数据库获取数据并将其编码为JSON数组,然后通过AJAX调用将其传递到另一个页面。重点讲解了如何在接收数据的页面中解析JSON数据,并将JSON数组中的特定值提取为PHP变量,以便在后续的函数或查询中使用。 从数据库获取数据并编码为JSON 首先,我们需要从数据库中获取数据…

    2026年9月23日
    1200

发表回复

登录后才能评论
关注微信