http判断缓存是否有效,为什么有了last-modified还需要etag呢?
If-Modified-Since:
作用: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中.
ETag:
是实体标签(Entity Tag)的缩写, 根据实体内容生成的一段hash字符串(类似于MD5或者SHA1之后的结果),可以标识资源的状态。 当资源发送改变时,ETag也随之发生变化。
ETag是Web服务端产生的,然后发给浏览器客户端。浏览器客户端是不用关心Etag是如何产生的。
问题是,我们知道last-modified可以用来判断浏览器的本地缓存是否有效,那为什么还要使用ETag呢? 主要是为了解决Last-Modified 无法解决的一些问题:
某些服务器不能精确得到文件的最后修改时间, 这样就无法通过最后修改时间来判断文件是否更新了。
某些文件的修改非常频繁,在秒以下的时间内进行修改. Last-Modified只能精确到秒。
一些文件的最后修改时间改变了,但是内容并未改变。 我们不希望客户端认为这个文件修改了。
http判断缓存是否有效,为什么有了last-modified还需要etag呢?相关推荐
- RESTful最佳实践
哲学 不要为了RESTful而RESTful 在能表达清楚的情况下,简单就是美 接口路径设计 接口设计原则 URI指向的是唯一的资源对象 示例: 指向ID为yanbo.ai的Account对象 GET ...
- net.conn read 判断数据读取完毕_高并发:缓存模式以及缓存的数据一致性
缓存由于其高性能,支持高并发的特性,在高并发的项目中不可或缺.被大家广泛使用的有Redis,Memcached等.本文主要探讨几种常见的缓存的读写模式,以及如何来保证缓存和数据库的数据一致性. 这里大 ...
- web页面上数据是否进行缓存要怎么判断_前端要知道的网络知识五:详细的介绍web缓存...
Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的"副本,就可以从本地存储设备而不是原始服务器中提取这个文档.本文将详细介绍缓存的相关 ...
- expires与etag控制页面缓存的优先级
expires指令控制HTTP应答中的"Expires"和"Cache-Control"Header头部信息,启动控制页面缓存的作用 time:可以使用正数或负 ...
- 浏览器缓存和webpack缓存配置
网络请求会耗费大量时间和请求,如果可以重用为改变的网络资源,对于用户来说可以更快更流畅的查看网页,对于服务器来说减少了很多负荷,所以浏览器缓存是前端优化的重要内容.本文介绍了浏览器缓存的机制和缓存在w ...
- redis del清除缓存java_redis zset集合操作缓存.java
getCacheItemSetPage(long keyId, Integer pageNum, Integer pageSize) { return getCache().zrevrangeBySc ...
- 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
一.缓存雪崩 缓存雪崩是指由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内 ...
- 什么是布隆过滤器?如何解决高并发缓存穿透问题?
日常开发中,大家经常使用缓存,但是你知道大型的互联网公司面对高并发流量,要注意缓存穿透问题吗!!! 本文会介绍布隆过滤器,空间换时间,以较低的内存空间.高效解决这个问题. 本篇文章的目录: 1. ...
- 系统架构设计:进程缓存和缓存服务,如何抉择?
作者:翁智华 来源:https://www.cnblogs.com/wzh2010/p/13874206.html 概述 我们所说的缓存分为进程内部缓存(系统内部缓存)和 缓存服务(如redis/me ...
最新文章
- 拆解Mate 30 Pro,内部双重散热、铜管一体紫色防滚架,太酷了!
- 机器学习之必知开源数据集
- 2011年华科计算机考研复试笔试算法、数据库(回忆版)
- sql运算符_SQL AND运算符解释语法示例
- 前端开发css禁止选中文本
- easyui及eova下select:option、find无法直接取值的解决办法
- [转]如何学好windows c++编程 学习精髓(收集,整理)
- “手机到底是如何实现定位的?工作原理是什么?”
- android 平板重装系统,平板电脑系统重装方法
- MySQL数据库:pg和mysql语法区别
- 第四章 语料库与语言知识库
- Mathematics for Computer Science 2
- java线程占用的空间_linux服务器查询java线程占用的资源-Go语言中文社区
- NAS(网络附属存储)、SAN和NAS存储有什么区别
- 车间数字孪生解决方案(一)
- oracle的scn技术,Oracle SCN机制详细解读
- 基于Springboot的电商系统开题报告
- 使用RKE部署Rancher v2.5.8 HA高可用集群
- linux常用命令【原创】
- 云计算,大数据资源推广