We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP状态码分为5类:
HTTP状态码
重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;
总结:
对比参考连接
如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小。空间满的时候,最先进入的数据会被最早置换(淘汰)掉。
如果一个数据在最近一段时间没有被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最久没有访问的数据最先被置换(淘汰)。
如果一个数据在最近一段时间很少被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最小频率访问的数据最先被淘汰。
一般来说浏览器缓存可以分为两类:
我们需要知道的是,浏览器在加载资源时,会先判断是否命中==强缓存==再验证是命中==协商缓存==。
浏览器在加载资源时,会先根据本地缓存资源的 header 中的信息判断是否命中强缓存,如果命中则直接使用缓存中的资源不会再向服务器发送请求。
Expires:Fri, 27 Oct 2017 07:55:30 GMT
在 HTTP/1.1 中,增加了一个字段 Cache-Control ,它包含一个 max-age 属性,该字段表示资源缓存的最大有效时间,这就是一个相对时间。
现在基本上都会同时设置 Expire 和 Cache-Control ,Cache-Control 的优先级别更高。
当强缓存没有命中的时候,浏览器会发送一个请求到服务器,服务器根据请求头中的部分信息来判断是否命中缓存。如果命中,则返回 304 ,告诉浏览器资源未更新,可使用本地的缓存。
浏览器第一次请求资源的时候,服务器返回的 header 上会带有一个 Last-Modified 字段,表示资源最后修改的时间(Last-Modified: Fri, 27 Oct 2017 07:55:30 GMT)。
Last-Modified: Fri, 27 Oct 2017 07:55:30 GMT
缺点:
Etag 一般是由文件内容 hash 生成的,也就是说它可以保证资源的唯一性,资源发生改变就会导致 Etag 发生改变。
Last-Modified 和 Etag 是可以同时设置的,服务器会优先校验 Etag,如果 Etag 相等就会继续比对 Last-Modified,最后才会决定是否返回 304.
304
The text was updated successfully, but these errors were encountered:
No branches or pull requests
常见的状态码有哪些
HTTP状态码分为5类:
HTTP状态码
304代表什么,和302有什么区别
302
重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;
304
总结:
Connection为Keep-alive表示什么
什么是Keep-Alive模式?
HTTP 2.0 和 HTTP1.1 和 HTTP1.0 区别
HTTP1.0和HTTP1.1区别
HTTP1.0和HTTP1.1现存的问题
HTTP2.0特性
HTTP1.1和HTTP2.0的区别
对比参考连接
HTTP的缓存策略
为什么需要浏览器缓存
什么是浏览器缓存
为什么需要浏览器缓存淘汰策略
FIFO(先进先出)
如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小。空间满的时候,最先进入的数据会被最早置换(淘汰)掉。
LRU(最近最少使用)
如果一个数据在最近一段时间没有被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最久没有访问的数据最先被置换(淘汰)。
LFU(最少使用)
如果一个数据在最近一段时间很少被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最小频率访问的数据最先被淘汰。
浏览器缓存的分类
一般来说浏览器缓存可以分为两类:
我们需要知道的是,浏览器在加载资源时,会先判断是否命中==强缓存==再验证是命中==协商缓存==。
强缓存
浏览器在加载资源时,会先根据本地缓存资源的 header 中的信息判断是否命中强缓存,如果命中则直接使用缓存中的资源不会再向服务器发送请求。
流程:
Expire
Expires:Fri, 27 Oct 2017 07:55:30 GMT
),如果修改了客户端的本地时间,会导致判断缓存失效。Cache-control
在 HTTP/1.1 中,增加了一个字段 Cache-Control ,它包含一个 max-age 属性,该字段表示资源缓存的最大有效时间,这就是一个相对时间。
现在基本上都会同时设置 Expire 和 Cache-Control ,Cache-Control 的优先级别更高。
协商缓存
当强缓存没有命中的时候,浏览器会发送一个请求到服务器,服务器根据请求头中的部分信息来判断是否命中缓存。如果命中,则返回 304 ,告诉浏览器资源未更新,可使用本地的缓存。
流程:
Last-Modified,If-Modified-Since
浏览器第一次请求资源的时候,服务器返回的 header 上会带有一个 Last-Modified 字段,表示资源最后修改的时间(
Last-Modified: Fri, 27 Oct 2017 07:55:30 GMT
)。缺点:
Etag
Etag 一般是由文件内容 hash 生成的,也就是说它可以保证资源的唯一性,资源发生改变就会导致 Etag 发生改变。
Last-Modified 和 Etag 是可以同时设置的,服务器会优先校验 Etag,如果 Etag 相等就会继续比对 Last-Modified,最后才会决定是否返回 304.
当浏览器再次访问一个已经访问过的资源时,它会这样做:
304
告诉浏览器使用本地缓存;缓存位置
Service Worker
Memory Cache
Disk Cache
Push Cache
The text was updated successfully, but these errors were encountered: