当发送一个服务器请求时,浏览器首先会进行缓存过期判断。浏览器根据缓存过期时间判断缓存文件是否过期若没有过期,则不向服务器发送请求,直接使用缓存中的结果。

此时,我们在浏览器控制台中可以看到200 OK( from cache),这种情况就是完全使用缓存,浏览器和服务器没有任何交互。

若已过期,则向服务器发送请求。此时,请求中会带上文件修改时间和Etag,然后进行资源更新判断。

服务器根据浏览器传过来的文件修改时间,判断自浏览器上一次请求之后,文件是否被修改过。根据Etag,判断文件内容自上一次请求之后,有没有发生变化。

若两种判断的结论都是文件没有被修改过,服务器就不给浏览器发送新的内容,而是直接告诉浏览器,文件没有被修改过,可以继续使用缓存—-304 Not Modified。

此时,浏览器就会从本地缓存中获取请求资源的内容,这种情况叫协议缓存,浏览器和服务器之间有一次请求交互。

若修改时间或文件内容判断中有任意一个没有通过,则服务器会受理此次请求,并返回新的数据注意,只有get请求会被缓存,post请求不会。

Etag由服务器端生成,客户端通过 If-Match或者If-None- Match这个条件判断请求来验证资源是否修改。常见的是使用I-None- Match。请求一个文件的流程如下。

第一次请求时,客户端发起 Http Get请求,以获取一个文件,服务器处理请求,返回文件内容和请求头(包括Eag),并返回状态码200第二次请求时,客户端发起 Http Get请求,以获取一个文件。

注意ÿ

什么是Etag?ETag的应用相关推荐

  1. 服务器怎么判断文件修改etag,ETag介绍

    1.概念 HTTP协议规格说明定义ETag为"被请求变量的实体值".另一种说法是,ETag是一个可以与Web资源关联的记号(token).典型的Web资源可以一个Web页,但也可能 ...

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

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

  3. 502无法解析服务器标头_编写下载服务器。 第二部分:标头:Last-Modified,ETag和If-None-Match...

    502无法解析服务器标头 客户端缓存是万维网的基础之一. 服务器应通知客户端资源的有效性,客户端应尽可能快地对其进行缓存. 如我们所见,如果不缓存Web,它将非常缓慢. 只需在任何网站上Ctrl + ...

  4. 编写下载服务器。 第二部分:标头:Last-Modified,ETag和If-None-Match

    客户端缓存是万维网的基础之一. 服务器应告知客户端资源的有效性,客户端应尽可能快地对其进行缓存. 如我们所见,如果不缓存Web,将会非常慢. 只需在任何网站上Ctrl + F5并将其与普通F5进行比较 ...

  5. Lighttpd1.4.20源码分析之etag.c(h) -------HTTP/1.1中的Etag域

    etag的全称是entity tag(标记实体值),在RFC2616中关于etag的定义如下: The ETag response-header field provides the current ...

  6. HTTP响应头之ETag

    在HTTP1.1规范中,新增了一个HTTP头信息:ETag.对Web开发者来说,它是一个非常重要的信息.它是用作缓存使 用的两个主要的头信息之一 (另一个是Expires).除此之外,在REST架构中 ...

  7. Expires / Cache-Control / Last-Modified / If-Modified-Since / ETag / If-None-Match 区别使用

    Expires / Cache-Control / Last-Modified / If-Modified-Since / ETag / If-None-Match 区别使用 http://hi.ba ...

  8. Nginx Etag学习

    Nginx Etag学习 Nginx Etag 什么是Etag Last-Modified / If-Modified-Since Etag工作原理 为什么要使用Etag Etag字符含义 强Etag ...

  9. php设置etag,PHP操作http中Etag、lastModified和Expires标签

    客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应同时记录相关属性标记(Http Reponse ...

  10. etag java_HTTP ETag和HTTP重定向

    我有一个Web服务器,它在响应中发出 ETag 标头,并检查客户端的 If-None-Match 标头(如果存在) . 在这种情况下,客户端不是Web浏览器,而是go的内置 net/http http ...

最新文章

  1. jdbcdslog hibernate sql log
  2. pywebio 和 pyecharts天生一对
  3. [译] MDC-101 Flutter:Material Components(MDC)基础(Flutter)
  4. DELL optiplex 解决改回 AHCI蓝屏问题
  5. gcc/g++ 以及makefile
  6. 机器学习(三十八)——博弈论(1)
  7. flex 引入css,Flex常用布局
  8. C++ I/O流 格式控制(下)
  9. RQNOJ PID379 / 约会计划 -并查集
  10. Linux 源代码阅读知识点及要求
  11. ZendFrameWork——文件夹标准
  12. eclipse中jsp页面 page报错问题
  13. 2006年上半年开发心得
  14. SiO2 介孔二氧化硅纳米颗粒的明胶包裹/二氧化硅杂化凝胶固定化醇脱氢酶/白蛋白和壳聚糖包裹的二氧化硅微球/二氧化硅包覆的量子点荧光编码微球
  15. FreeRTOS消息队列详解第一讲(全网最全)——消息队列概述
  16. mac 百度输入法如何切换成五笔,如何切换回拼音模式
  17. 泛微齐业成,一文告诉你如何实现全程数字化的预算管理
  18. 古月ROS入门21讲学习笔记
  19. lms c语言,LMS算法实现自适应滤波器(C语言版)
  20. 华罗庚统筹法与计算机专业,华罗庚的《统筹方法》

热门文章

  1. 女生做UI设计怎么样?现在学习UI设计还有前景吗?
  2. sigslot.h 中文文档
  3. QT基础:QFormLayout 列表布局简单演示
  4. 完数判断python
  5. 会计学里借贷记账法的借方与贷方(http://hi.baidu.com/honeyxxd/blog/item/7a8c1ed71e5f23dea044df50.html)
  6. OpenCV学习笔记(14):形态学滤波对图像进行边缘及角点检测
  7. linux kdump
  8. JDBC学习笔记(六)
  9. 绿色环保又节能,软件开发居然也可以
  10. 【工业智能】天泽智云揭秘:人工智能如何打造“无忧风场”