首页 > 编程知识 正文

http缓存,http协议解析

时间:2023-05-03 15:46:31 阅读:271075 作者:492

浏览器的缓存机制(仅仅涉及如何设置浏览器使用或不使用缓存) 浏览器的缓存机制1、Cache-Control/PragmaExpires(过期时间)Last-Modified/Etag

浏览器的缓存机制

浏览器是一个比较复杂但是又比较重要的机制,我们在浏览一个页面发现有异常的情况下,通常考虑的就是是不是浏览器做了缓存,一般的做法就是按Ctrl+F5组合键重新请求一次这个页面,但是为什么重新请求的就一定是请求到没有缓存的页面呢?

如果是按Ctrl+F5组合键刷新页面,那么浏览器会直接向目标URL发送请求,而不会使用浏览器缓存的数据请求到服务端,也可能访问到的是缓存数据,,比如会在应用服务器的前端部署一个缓存服务器。所以,要保证用户能够看到最新的数据,必须通过http来控制

HTTP的请求头返回数据

按Ctrl+F5刷新页面时HTTP的请求头的数据

这次请求时头部增加了一个Cache-Control: 配置,同作用的还有Pragma: 。为什么增加这个配置呢,有什么作用?

1、Cache-Control/Pragma

这个HTTP Head字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令,HTTP Head字段有一些可选值,值及其说明如下表所示:

HTTP Head字段的可选值

可选值说明Public所有内容都将被缓存,在响应头中设置Private内容只被缓存到私有缓存中,在响应头中设置no-cache所有内容不会被缓存,在请求头和响应头中设置no-store所有内容都不会被缓存或Internet临时文件中,在响应头中设置must-revalidation/proxy-revalidation如果缓存的内容失效,请求必须发送到服务器/代理器进行重新验证,在请求头中设置max-age=xxx缓存的内容将在xxx秒后失效,这个选项只在HTTP1.1中可用,和Last-Modifide一起使用时优先级较高,在响应头中设置

Cache-control请求字段被浏览器支持的较好,而且优先级较高,推荐使用,和其他的请求字段(入Expires)同时出现时,Cache-control会覆盖其他字段
PragmaCache-control作用类似

Expires(过期时间)

Expires通常使用格式为Expires:Sat,25 Feb 2019 12:12:12 GMT ,后面跟着一个日期和时间,超过这个时间后,缓存的内容将失效,浏览器发请求时会先检查这个字段,看看是否过期,如果已过期就重新向服务器发送请求

Last-Modified/Etag

Last-Modified字段一般用于表示一个服务器上的资源的最后修改时间,资源是静态内容(静态资源自动加上Last-Modified字段)或者动态资源,通过这个最后修改时间可以判断当前请求的资源是否是最新.

一般服务器端在响应头中返回一个Last-modified:Sat,25 Feb 2019 12:12:12 GMT字段,高数浏览器这个页面的最后修改时间, 浏览器再次请求时在请求头中加上If-Modified-Since:Sat,25 Feb 2019 12:12:12 GMT,询问当前缓存的页面是否是最新的,如果是最新的就返回302状态码,服务器不会传输最新的数据

HTTP协议的响应头,请求头详解:.
HTTP返回码大全

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。