ETag 是 Entity Tag 的缩写,中文译过来就是实体标签的意思。在HTTP1.1协议中其实就是请求HEAD中的一个属性而已。

ETag是HTTP1.1中才加入的一个属性,用来帮助服务器控制Web端的缓存验证。它的原理是这样的,当浏览器请求服务器的某项资源(A)时, 服务器根据A算出一个哈希值(3f80f-1b6-3e1cb03b)并通过 ETag 返回给浏览器,浏览器把"3f80f-1b6-3e1cb03b" 和 A 同时缓存在本地,当下次再次向服务器请求A时,会通过类似 If-None-Match: "3f80f-1b6-3e1cb03b" 的请求头把ETag发送给服务器,服务器再次计算A的哈希值并和浏览器返回的值做比较,如果发现A发生了变化就把A返回给浏览器(200),如果发现A没有变化就给浏览器返回一个304未修改。这样通过控制浏览器端的缓存,可以节省服务器的带宽,因为服务器不需要每次都把全量数据返回给客户端。

注:HTTP中并没有指定如何生成ETag,哈希是比较理想的选择。

通常情况下,ETag更类似于资源指纹(fingerprints),如果资源发生变化了就会生成一个新的指纹,这样可以快速的比较资源的变化。在服务器端实现中,很多情况下并不会用哈希来计算ETag,这会严重浪费服务器端资源,很多网站默认是禁用ETag的。有些情况下,可以把ETag退化,比如通过资源的版本或者修改时间来生成ETag。

如果通过资源修改时间来生成ETag,那么效果和HTTP协议里面的另外一个控制属性(Last-Modified)就雷同了,使用 Last-Modified 的问题在于它的精度在秒(s)的级别,比较适合不太敏感的静态资源。

以上参考链接:https://www.jianshu.com/p/a3ea9619c38d

总结:
LM根据文件修改时间来判断是否要重新返回整个文件,对应请求头 IF-M-S ,服务端和客户端进行对比,但是时间只能精确到秒,假如在这一秒之间恰好发生了变化就GG了。
E-tag则是对文件求MD5或者哈希值,绝对精确,只要有任何变化都能体现出来,这个算法貌似是server配置的

ETag 和 Last-modified相关推荐

  1. Android HTTP必知必会

    HTTP协议使用如此广泛,开发者务必要做到"知","会". 引子 用curl请求百度首页全解析的过程: 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  2. 具有Spring Boot和Java配置的Spring Batch教程

    我一直在努力将Podcastpedia.org的一些批处理作业迁移到Spring Batch. 以前,这些工作是以我自己的方式开发的,我认为现在是时候使用一种更"标准化"的方法了. ...

  3. 分布式文件系统_新一代分布式文件系统XGFS揭秘——元数据服务

    新一代分布式文件存储系统XGFS,基于最新一代NVMe/SCM存储介质设计,利用高性能LSM存储引擎,结合XSKY独有专利技术的键值设计,构建出完全自主的元数据服务-本文系揭秘XGFS系列之首篇内容. ...

  4. XSKY新一代分布式文件系统XGFS揭秘——元数据服务

    新一代分布式文件存储系统XGFS,基于最新一代NVMe/SCM存储介质设计,利用高性能LSM存储引擎,结合XSKY独有专利技术的键值设计,构建出完全自主的元数据服务-本文系揭秘XGFS系列之首篇内容. ...

  5. 7本最佳深度学习书籍,总有一本适合你

    原标题:7本最佳深度学习书籍,总有一本适合你 编译 | 人工智能头条 参与| 刘畅 编辑| 阿司匹林 深度学习是如今最火热的技术之一,但是对于有心入门却不得其法的同学来说,选择适合自己的书籍至关重要. ...

  6. http响应Last-Modified和ETag以及Apache和Nginx中的配置

    基础知识 1) 什么是"Last-Modified"? 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属 ...

  7. [HTTP]Etag的工作流程

    1. 浏览器首次访问该资源时,web服务器返回资源的同时,响应报文头携带ETag标签: 2. 浏览器将保存该Etag标签的值: 3. 当浏览器发起下一次请求,请求报文头将会携带 If-None-Mat ...

  8. SAP OData 后台ETAG校验逻辑

    Created by Jerry Wang, last modified on Jul 27, 2015 修改了lead的数据之后点击save button,首先从后台重新读取一次lead的数据: 将 ...

  9. SAP UI5 Gateway后台ETAG校验逻辑

    Created by Jerry Wang, last modified on Jul 27, 2015 修改了lead的数据之后点击save button,首先从后台重新读取一次lead的数据: 将 ...

  10. HTTP 200 OK和HTTP 304 Not modified的由来

    这两个字段都和HTTP协议的缓存控制相关. 浏览器缓存机制是通过HTTP协议Header里的Cache-Control(或Expires)和Last-Modified(或 Etag)等字段来实现. 这 ...

最新文章

  1. R语言ggplot2可视化创建堆叠的柱状图(stacked barplot)并且每个堆叠的柱状图都缩放到总和为100%实战:最后所有的堆叠的柱子都一样高、Y轴以百分比的形式来显示
  2. 机器学习漫谈:还有很长的路要走
  3. 4-8岁那些最难的数学概念,美国老师用一套绘本让孩子秒懂
  4. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用
  5. P1481 魔族密码 (LIS)
  6. Visual Studio Code 1.45 发布
  7. 【python】Python简介及优缺点
  8. System V 共享内存 和 系列函数
  9. X-NUCA全国高校网安联赛7月训练题解
  10. 程序员面试金典——17.4无判断max
  11. 问题二十一:怎么模拟ray tracing图形中不同材料的颜色(diffuse and metal)
  12. Python 语言程序设计(1)
  13. 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
  14. android 印章,android 印章 控件
  15. 固建机器人钢结构智能生产线 改善钢结构行业品质
  16. 2018计算机考研国家线预测,2018考研国家线预测及解读-考研帮(kaoyan.com)
  17. “黑桃A” 11月19日团队实训总结
  18. 数据库如何转身云原生数据库
  19. MacTeX使用指南
  20. 人工智能对学计算机的影响,计算机专业大学生对人工智能对人类的影响分析.docx...

热门文章

  1. 从微博个性图标里学Android动态更换
  2. RFM会员价值度模型
  3. 王坚:我为什么反对有些企业的“去IOE”运动?
  4. windows下用netsh工具设置笔记本wifi热点
  5. poj2325 大数除法+贪心
  6. Tomcat8:java.lang.IllegalArgumentException: 为此cookie指定的域[.xxx.com]无效
  7. 原来面试成功的程序员简历都是这样写的
  8. Android可信执行环境TEE最全介绍
  9. MLT 框架设计文档翻译
  10. Quartus Prime设计十五人投票表决器