前端缓存策略:强缓存与协商缓存
创始人
2024-11-10 20:35:39
0

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

    • 摘要:
    • 引言:
    • 正文:
      • 一、强缓存(Expires和Cache-Control) 🌟
      • 二、协商缓存(Last-Modified和Etag) 🚀
      • 三、配置方法 📦
    • 总结:
    • 参考资料:

摘要:

本文将介绍前端缓存策略中的强缓存和协商缓存,包括它们的原理、应用场景和配置方法。掌握这两种缓存策略可以帮助开发者优化网页性能,提高用户体验。

引言:

在Web开发中,缓存策略是优化网页性能的重要手段。强缓存和协商缓存是前端缓存策略中的两种主要方式。本文将介绍这两种缓存策略的原理、应用场景和配置方法,帮助开发者更好地理解和应用它们。

正文:

一、强缓存(Expires和Cache-Control) 🌟

强缓存是通过HTTP头部中的Expires和Cache-Control字段来实现的。这些字段告诉浏览器如何缓存资源,并在指定时间内不需要向服务器发送请求。

  1. Expires:Expires头部指定资源到期时间,一旦超过这个时间,浏览器会重新向服务器发送请求。
  2. Cache-Control:Cache-Control头部提供了更灵活的控制方式,可以设置缓存的最大年龄、是否允许缓存等。

强缓存是指浏览器在请求资源时,直接从本地缓存中获取数据,而不是从服务器获取。强缓存可以通过设置HTTP响应头中的Expires和Cache-Control字段来实现。

  1. Expires
    Expires字段用于指定缓存过期的时间,即缓存的有效期。当浏览器再次请求该资源时,如果缓存未过期,浏览器会直接从本地缓存中获取数据,而不是向服务器发送请求。Expires字段的值是一个HTTP日期,表示缓存过期的时间。

例如,以下响应头表示该资源的有效期为1小时:

Expires: Wed, 21 Oct 2021 08:00:00 GMT 
  1. Cache-Control
    Cache-Control字段用于指定缓存的行为。它可以通过设置不同的指令来控制缓存的生命周期、缓存可被代理缓存、强制缓存等。

例如,以下响应头表示该资源可以被缓存,缓存有效期为1小时,并且只能被缓存1次:

Cache-Control: max-age=3600, must-revalidate 

此外,Cache-Control字段还可以设置其他指令,如public、private、no-cache、no-store等,以满足不同的缓存需求。

总之,强缓存是通过设置Expires和Cache-Control字段来实现的,可以有效地提高网页的加载速度,减少服务器的负载。

二、协商缓存(Last-Modified和Etag) 🚀

协商缓存是通过HTTP头部中的Last-Modified和Etag字段来实现的。这些字段告诉浏览器如何与服务器协商缓存资源。

  1. Last-Modified:Last-Modified头部指定资源最后修改的时间,浏览器会根据这个时间与服务器协商缓存。
  2. Etag:Etag头部提供一个资源的唯一标识符,浏览器会根据这个标识符与服务器协商缓存。

协商缓存是指浏览器在请求资源时,先向服务器发送请求,服务器根据请求头中的缓存信息来判断是否可以使用缓存。如果可以使用缓存,服务器会将缓存数据返回给浏览器,而不是重新生成数据。协商缓存可以通过设置HTTP响应头中的Last-Modified和Etag字段来实现。

  1. Last-Modified
    Last-Modified字段用于指定资源最后修改的时间。当浏览器再次请求该资源时,会在请求头中携带Last-Modified字段的值。服务器会根据请求头中的Last-Modified值来判断资源是否发生了变化。如果资源未发生变化,服务器会返回304 Not Modified的响应,告诉浏览器可以使用缓存。

例如,以下响应头表示资源最后修改时间为2021年10月21日:

Last-Modified: Wed, 21 Oct 2021 08:00:00 GMT 
  1. Etag
    Etag字段用于指定资源的唯一标识。当浏览器再次请求该资源时,会在请求头中携带Etag字段的值。服务器会根据请求头中的Etag值来判断资源是否发生了变化。如果资源未发生变化,服务器会返回304 Not Modified的响应,告诉浏览器可以使用缓存。

例如,以下响应头表示资源的Etag值为“123456”:

Etag: "123456" 

总之,协商缓存是通过设置Last-Modified和Etag字段来实现的,可以有效地避免重复请求,提高网页的加载速度。

三、配置方法 📦

在Web服务器上配置强缓存和协商缓存,可以提高网页性能。以下是一些配置方法:

  1. 在Apache服务器上,可以通过Expires指令和Cache-Control指令来设置强缓存。
  2. 在Nginx服务器上,可以通过expires指令和add_header指令来设置强缓存。
  3. 在Node.js服务器上,可以通过中间件或框架(如Express)来设置强缓存和协商缓存。

总结:

本文介绍了前端缓存策略中的强缓存和协商缓存,包括它们的原理、应用场景和配置方法。掌握这两种缓存策略可以帮助开发者优化网页性能,提高用户体验。

参考资料:

  • MDN Web Docs: HTTP Caching
  • Expires and Cache-Control
  • Last-Modified and Etag

相关内容

热门资讯

一秒答解!aapoker辅助工... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款游戏中打...
科普!边锋老友圈怎么开辅助,h... 科普!边锋老友圈怎么开辅助,hhpoker是真的还是假的,高科技教程(有挂细节)-哔哩哔哩;边锋老友...
详细一下!小南四川长牌辅助,w... 详细一下!小南四川长牌辅助,wepoker辅助脚本,都是真的是有挂(哔哩哔哩)1、每一步都需要思考,...
推荐几款新版!拱趴大菠萝机器人... 推荐几款新版!拱趴大菠萝机器人,we-poker辅助软件教程,其实真的有挂(真的有挂)1、免费辅助多...
研究成果!wepoker破解版... 研究成果!wepoker破解版内购,wpk透视插件,普及教程(有挂分析)-哔哩哔哩;亲真的是有正版授...
科普一下!福建大玩家十三水辅助... 科普一下!福建大玩家十三水辅助,陕麻圈脚本辅助,一贯存在有挂(哔哩哔哩)1、上手简单,内置详细流程视...
必知教程!wpk辅助器是真的吗... 必知教程!wpk辅助器是真的吗,hhpoker开挂教程,切实真的有挂(有挂猫腻)破解侠是真的助透视。...
科技介绍!拱趴大菠萝技巧,红龙... 科技介绍!拱趴大菠萝技巧,红龙poker辅助平台,系统教程(发现有挂)-哔哩哔哩;拱趴大菠萝技巧AI...
解谜一下!乐平包王讨赏辅助,逸... 解谜一下!乐平包王讨赏辅助,逸趣鄱阳翻精辅助,原来是真的有挂(哔哩哔哩)1.乐平包王讨赏辅助 选牌创...
信息共享!德州透视插件,wep... 信息共享!德州透视插件,wepoker私人局辅助器怎么用,果然是真的有挂(真实有挂)1、wepoke...