If-Modified-Since:

作用: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中.


ETag:

是实体标签(Entity Tag)的缩写, 根据实体内容生成的一段hash字符串(类似于MD5或者SHA1之后的结果),可以标识资源的状态。 当资源发送改变时,ETag也随之发生变化。

ETag是Web服务端产生的,然后发给浏览器客户端。浏览器客户端是不用关心Etag是如何产生的。

问题是,我们知道last-modified可以用来判断浏览器的本地缓存是否有效,那为什么还要使用ETag呢? 主要是为了解决Last-Modified 无法解决的一些问题:

  1. 某些服务器不能精确得到文件的最后修改时间, 这样就无法通过最后修改时间来判断文件是否更新了。

  2. 某些文件的修改非常频繁,在秒以下的时间内进行修改. Last-Modified只能精确到秒。

  3. 一些文件的最后修改时间改变了,但是内容并未改变。 我们不希望客户端认为这个文件修改了。

http判断缓存是否有效,为什么有了last-modified还需要etag呢?相关推荐

  1. RESTful最佳实践

    哲学 不要为了RESTful而RESTful 在能表达清楚的情况下,简单就是美 接口路径设计 接口设计原则 URI指向的是唯一的资源对象 示例: 指向ID为yanbo.ai的Account对象 GET ...

  2. net.conn read 判断数据读取完毕_高并发:缓存模式以及缓存的数据一致性

    缓存由于其高性能,支持高并发的特性,在高并发的项目中不可或缺.被大家广泛使用的有Redis,Memcached等.本文主要探讨几种常见的缓存的读写模式,以及如何来保证缓存和数据库的数据一致性. 这里大 ...

  3. web页面上数据是否进行缓存要怎么判断_前端要知道的网络知识五:详细的介绍web缓存...

    Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的"副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关 ...

  4. expires与etag控制页面缓存的优先级

    expires指令控制HTTP应答中的"Expires"和"Cache-Control"Header头部信息,启动控制页面缓存的作用 time:可以使用正数或负 ...

  5. 浏览器缓存和webpack缓存配置

    网络请求会耗费大量时间和请求,如果可以重用为改变的网络资源,对于用户来说可以更快更流畅的查看网页,对于服务器来说减少了很多负荷,所以浏览器缓存是前端优化的重要内容.本文介绍了浏览器缓存的机制和缓存在w ...

  6. redis del清除缓存java_redis zset集合操作缓存.java

    getCacheItemSetPage(long keyId, Integer pageNum, Integer pageSize) { return getCache().zrevrangeBySc ...

  7. 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级

    一.缓存雪崩 缓存雪崩是指由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内 ...

  8. 什么是布隆过滤器?如何解决高并发缓存穿透问题?

    日常开发中,大家经常使用缓存,但是你知道大型的互联网公司面对高并发流量,要注意缓存穿透问题吗!!!    本文会介绍布隆过滤器,空间换时间,以较低的内存空间.高效解决这个问题. 本篇文章的目录: 1. ...

  9. 系统架构设计:进程缓存和缓存服务,如何抉择?

    作者:翁智华 来源:https://www.cnblogs.com/wzh2010/p/13874206.html 概述 我们所说的缓存分为进程内部缓存(系统内部缓存)和 缓存服务(如redis/me ...

最新文章

  1. 拆解Mate 30 Pro,内部双重散热、铜管一体紫色防滚架,太酷了!
  2. 机器学习之必知开源数据集
  3. 2011年华科计算机考研复试笔试算法、数据库(回忆版)
  4. sql运算符_SQL AND运算符解释语法示例
  5. 前端开发css禁止选中文本
  6. easyui及eova下select:option、find无法直接取值的解决办法
  7. [转]如何学好windows c++编程 学习精髓(收集,整理)
  8. “手机到底是如何实现定位的?工作原理是什么?”
  9. android 平板重装系统,平板电脑系统重装方法
  10. MySQL数据库:pg和mysql语法区别
  11. 第四章 语料库与语言知识库
  12. Mathematics for Computer Science 2
  13. java线程占用的空间_linux服务器查询java线程占用的资源-Go语言中文社区
  14. NAS(网络附属存储)、SAN和NAS存储有什么区别
  15. 车间数字孪生解决方案(一)
  16. oracle的scn技术,Oracle SCN机制详细解读
  17. 基于Springboot的电商系统开题报告
  18. 使用RKE部署Rancher v2.5.8 HA高可用集群
  19. linux常用命令【原创】
  20. 云计算,大数据资源推广

热门文章

  1. 【Gitlab】配置、运行Gitlab容器实例及简单使用测试
  2. zoj 1582 Careless Tony(水!)
  3. Word操作技巧大全1(转)
  4. 如何用计算机设计班牌,班牌设计
  5. 一文掌握GSEA,超详细教程!
  6. 最简单的基于Flash的流媒体示例 网页播放器(HTTP,RTMP,HLS)
  7. MySQL字段约束条件,外键约束条件,表关系
  8. Android学习笔记_28_手势识别
  9. 05-SA8155 QNX I2C框架及代码分析
  10. alter table新增字段操作究竟有何影响?(上篇)