爱创课堂每日一题第二十四天-ETag应用?

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

====第一次请求===

1.客户端发起 HTTP GET 请求一个文件;
2.服务器处理请求,返回文件内容和一堆Header,当然包括Etag(例如"2e681a-6-5d044840")(假设服务器支持Etag生成和已经开启了Etag).状态码200

====第二次请求===

客户端发起 HTTP GET 请求一个文件,注意这个时候客户端同时发送一个If-None-Match头,这个头的内容就是第一次请求时服务器返回的Etag:2e681a-6-5d0448402.服务器判断发送过来的Etag和计算出来的Etag匹配,因此If-None-Match为False,不返回200,返回304,客户端继续使用本地缓存;流程很简单,问题是,如果服务器又设置了Cache-Control:max-age和Expires呢,怎么办

答案是同时使用,也就是说在完全匹配If-Modified-SinceIf-None-Match即检查完修改时间和Etag之后,

服务器才能返回304.(不要陷入到底使用谁的问题怪圈)

时间: 2024-07-31 23:31:48

爱创课堂每日一题第二十四天-ETag应用?的相关文章

爱创课堂每日一题第二十五天-2017/9/27 栈和队列的区别??

栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的. 队列先进先出,栈先进后出. 栈只允许在表尾一端进行插入和删除,而队列只允许在表尾一端进行插入,在表头一端进行删除

爱创课堂每日一题第二十二天-什么是Etag?

当发送一个服务器请求时,浏览器首先会进行缓存过期判断.浏览器根据缓存过期时间判断缓存文件是否过期.情景一:若没有过期,则不向服务器发送请求,直接使用缓存中的结果,此时我们在浏览器控制台中可以看到 200 OK(from cache) ,此时的情况就是完全使用缓存,浏览器和服务器没有任何交互的.情景二:若已过期,则向服务器发送请求,此时请求中会带上①中设置的文件修改时间,和Etag然后,进行资源更新判断.服务器根据浏览器传过来的文件修改时间,判断自浏览器上一次请求之后,文件是不是没有被修改过:根据

爱创课堂每日一题第二天8/24日 Quirks模式是什么?它和Standards模式有什么区别?

从IE6开始,引入了Standards模式,标准模式中,浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度. 在IE6之前CSS还不够成熟,所以IE5等之前的浏览器对CSS的支持很差, IE6将对CSS提供更好的支持,然而这时的问题就来了,因为有很多页面是基于旧的布局方式写的,而如果IE6 支持CSS则将令这些页面显示不正常,如何在即保证不破坏现有页面,又提供新的渲染机制呢? 在写程序时我们也会经常遇到这样的问题,如何保证原来的接口不变,又提供更强大的功能,尤其是新功能不兼容旧

爱创课堂每日一题第十六天为什么HTTPS安全?

因为网络请求需要中间有很多的服务器路由器的转发.中间的节点都可能篡改信息,而如果使用HTTPS,密钥在你和终点站才有.https之所以比http安全,是因为他利用ssl/tls协议传输.它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等.保障了传输过程的安全性

爱创课堂每日一题第二十三天- Expires和Cache-Control?

Expires要求客户端和服务端的时钟严格同步.HTTP1.1引入Cache-Control来克服Expires头的限制.如果max-age和Expires同时出现,则max-age有更高的优先级.    Cache-Control: no-cache, private, max-age=0    ETag: abcde    Expires: Thu, 15 Apr 2014 20:00:00 GMT    Pragma: private    Last-Modified: $now // R

爱创课堂每日一题第十天创建ajax过程?

(1)创建`XMLHttpRequest`对象,也就是创建一个异步调用对象.    (2)创建一个新的`HTTP`请求,并指定该`HTTP`请求的方法.`URL`及验证信息.    (3)设置响应`HTTP`请求状态变化的函数.    (4)发送`HTTP`请求.    (5)获取异步调用返回的数据.    (6)使用JavaScript和DOM实现局部刷新.    var xmlHttp = new XMLHttpRequest();    xmlHttp.open('GET','demo.p

爱创课堂每日一题第四十九天- 什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC?

1.如何获取rpm包,及制作kubernetes镜像 1.1 官方yum源,有翻墙能力的 请使用 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.c

爱创课堂每日一题第四十六天- 浮动元素引起的问题和解决办法?

浮动元素引起的问题:(1)父元素的高度无法被撑开,影响与父元素同级的元素(2)与浮动元素同级的非浮动元素(内联元素)会跟随其后(3)若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构解决方法:使用CSS中的clear:both;属性来清除元素的浮动可解决2.3问题,对于问题1,添加如下样式,给父元素添加clearfix样式:    .clearfix:after{content: ".";display: block;height: 0;clear: both;

爱创课堂每日一题第四十七天- 清除浮动的几种方法?

1,额外标签法,<div style="clear:both;"></div>(缺点:不过这个办法会增加额外的标签使HTML结构看起来不够简洁.)    2,使用after伪类    #parent:after{        content:".";        height:0;        visibility:hidden;        display:block;        clear:both;        }