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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爱创课堂每日一题第二十二天-什么是Etag?相关的知识,希望对你有一定的参考价值。

当发送一个服务器请求时,浏览器首先会进行缓存过期判断。浏览器根据缓存过期时间判断缓存文件是否过期。
情景一:若没有过期,则不向服务器发送请求,直接使用缓存中的结果,此时我们在浏览器控制台中可以看到 200 OK(from cache) ,此时的情况就是完全使用缓存,浏览器和服务器没有任何交互的。
情景二:若已过期,则向服务器发送请求,此时请求中会带上①中设置的文件修改时间,和Etag
然后,进行资源更新判断。服务器根据浏览器传过来的文件修改时间,判断自浏览器上一次请求之后,文件是不是没有被修改过;根据Etag,判断文件内容自上一次请求之后,有没有发生变化
情形一:若两种判断的结论都是文件没有被修改过,则服务器就不给浏览器发index.html的内容了,直接告诉它,文件没有被修改过,你用你那边的缓存吧—— 304 Not Modified,此时浏览器就会从本地缓存中获取index.html的内容。此时的情况叫协议缓存,浏览器和服务器之间有一次请求交互。
情形二:若修改时间和文件内容判断有任意一个没有通过,则服务器会受理此次请求,之后的操作同①
① 只有get请求会被缓存,post请求不会

以上是关于爱创课堂每日一题第二十二天-什么是Etag?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

爱创课堂每日一题第二十九天- ES6的了解?

爱创课堂每日一题第二十六天-2017/9/28 栈和堆的区别?

爱创课堂每日一题第二十天- 谈谈性能优化问题?

爱创课堂每日一题第二十八天你觉得jQuery或zepto源码有哪些写的好的地方?