首页 > 其他分享 >ETag有什么运用场景呢?

ETag有什么运用场景呢?

时间:2024-12-02 09:46:32浏览次数:4  
标签:缓存 请求 image 场景 png 运用 资源 ETag

ETag (Entity Tag) 在前端开发中主要用于缓存控制条件请求,提升网站性能和用户体验。 以下是一些常见的应用场景:

  • 优化浏览器缓存: 服务器返回资源时,会带上 ETag 响应头,它是一个资源的唯一标识符(类似于指纹)。浏览器将资源和 ETag 缓存在本地。下次请求同一资源时,浏览器会在请求头中带上 If-None-Match,值为之前缓存的 ETag。服务器收到请求后,会将请求中的 ETag 与当前资源的 ETag 进行比较。如果一致,表示资源未修改,服务器返回 304 Not Modified 状态码,浏览器直接使用本地缓存,节省带宽和时间。如果不一致,服务器返回 200 状态码和新的资源以及新的 ETag。

  • 防止并发更新丢失数据: ETag 可以用于实现乐观锁机制,防止多个用户同时修改同一资源导致数据不一致。客户端在修改资源前,先获取资源的 ETag。修改完成后,将 ETag 和修改后的数据一起提交到服务器。服务器比较请求中的 ETag 和当前资源的 ETag。如果一致,则更新资源;如果不一致,表示资源已被其他用户修改,服务器返回错误信息,提示用户重新获取资源并修改。

  • 断点续传: 下载大文件时,如果网络中断,可以利用 ETag 实现断点续传。客户端记录已下载部分的 ETag 和文件大小。重新下载时,在请求头中带上 If-Range 和已下载部分的 ETag。服务器判断 ETag 是否匹配,如果匹配,则返回剩余部分的数据;如果不匹配,则返回完整的文件。

  • CDN缓存失效: 当源服务器上的资源更新后,需要使 CDN 上的缓存失效。可以通过更新资源的 ETag 来实现。CDN 会根据 ETag 判断缓存是否有效。

示例:

  1. 首次请求:
Request: GET /image.png
Response: 200 OK
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Content-Type: image/png
... (image data)
  1. 再次请求 (资源未修改):
Request: GET /image.png
If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Response: 304 Not Modified
  1. 再次请求 (资源已修改):
Request: GET /image.png
If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"
Response: 200 OK
ETag: "d41d8cd98f00b204e9800998ecf8427e"  (新的ETag)
Content-Type: image/png
... (新的 image data)

总而言之,ETag 是一个强大的工具,可以帮助前端开发者有效地管理缓存,提高网站性能,并确保数据一致性。 理解其工作原理并在项目中正确使用,可以带来显著的优化效果。

标签:缓存,请求,image,场景,png,运用,资源,ETag
From: https://www.cnblogs.com/ai888/p/18581001

相关文章

  • 说说你对postMessage的理解,它有什么运用场景呢?
    postMessage是一个强大的方法,允许在不同浏览器窗口(包括标签页、iframe、弹出窗口)或同一窗口的不同JavaScript执行上下文(例如,主线程和WebWorker)之间安全地进行跨域通信。它绕过了同源策略的限制,实现了灵活的数据交换。核心理解:postMessage的工作机制类似于发送消息。源窗......
  • pageshow和pageshide有什么应用场景呢?
    pageshow和pagehide事件在前端开发中主要用于处理页面在浏览器中的可见性变化,与用户的直接交互关系不大,更多的是关注页面自身的状态。它们比visibilitychange事件更专注于页面本身的加载和卸载状态,而visibilitychange则关注页面的可见性,例如用户切换标签页或最小化浏览器。......
  • 有了解过`getSelection`API吗?怎么使用,有哪些场景?
    getSelection()API是一个用于获取用户在网页上选择的文本的JavaScriptAPI。它返回一个Selection对象,该对象包含有关所选文本的信息,例如所选文本的内容、起始位置和结束位置等。使用方法:constselection=window.getSelection();if(selection.rangeCount>0){//检......
  • Dede更新栏目时出现 DedeTag Engine Create File False 错误
    原因:要创建的目录或文件没有写入权限。解决办法:定位出错文件:修改 include/dedetag.class.php 文件,搜索 "DedeTagEngineCreateFileFalse",找到以下代码:  $fp=@fopen($filename,"w")ordie("DedeTagEngineCreateFileFalse");修改为:  $fp......
  • 京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
    本文原文链接文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完......
  • js的sort方法运用场景有哪些?
    JavaScript的sort()方法主要用于对数组的元素进行排序。它有很多应用场景,在前端开发中尤为常见:1.列表排序:这是最常见的应用场景。当需要按照字母顺序、数字大小、日期先后等对列表项进行排序展示时,sort()方法是必不可少的。例如,电商网站上的商品列表,可以根据价格、销......
  • 你知道js的可选链是什么吗?说说你对它的理解,它有什么应用场景?
    我知道JavaScript的可选链操作符。它用?.表示,允许开发者安全地访问嵌套对象的属性,而无需显式地检查每个级别的属性是否存在。如果链中的任何属性为null或undefined,表达式将短路并返回undefined,而不是抛出错误。理解:可选链操作符本质上是一系列短路求值的条件判断的简写......
  • 数字技术助力电力行业低碳化发展路径及典型场景研究报告汇总PDF洞察(附原数据表)
    原文链接:https://tecdat.cn/?p=36371在全球应对气候变化的大背景下,中国积极推进“双碳”战略,一场深刻的能源与经济变革正在展开。本报告合集汇总聚焦于能源领域多方面的关键议题,深入剖析其现状与发展趋势。能源作为中国碳排放的主导因素,火电占比过高致使排放问题突出,而电力行业......
  • 大模型落地场景观察系列:知识库为什么是企业优先落地选择
    迈容智能是一家专注于人工智能及企业自动化解决方案的科技公司,作为国内最早一批投入大模型技术和应用领域研究的厂商之一,我们秉承着“不卷大模型,更注重应用落地”的理念,先后推出了知识问答助手、智能问数系列以及迈容AIAgent平台等一系列大模型产品,已在金融、能源、财务等......
  • canvas的应用场景有哪些?
    在前端开发中,CanvasAPI提供了一个可以通过JavaScript绘制图形的HTML元素。它就像一块画布,开发者可以使用JavaScript代码在上面绘制各种图形、动画以及处理图像数据。以下是一些Canvas的常见应用场景:1.数据可视化:图表:Canvas非常适合创建各种类型的图表,例如线形......