1、Last-Modified
作用:表示文档最后修改时间,当去服务端校验时会用到这个时间。
说明:在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse Header)此文件在服务期端最后被修改的时间,格式类似这样:
Last-Modified:Tue, 24 Feb 2009 08:01:04 GMT
客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头(HttpRequest Header),询问该时间之后文件是否有被修改过:
If-Modified-Since:Tue, 24 Feb 2009 08:01:04 GMT
如果服务器端的资源没有变化,则自动返回HTTP304(NotChanged.)状态码,内容为空,这样就节省了传输数据量。
(注:如果If-Modified-Since的时间比服务器当前时间(当前的请求时间request_time)还晚,会认为是个非法请求)
2、Expires
作用:在http/1.0里表示文档在浏览器中的过期时间,当浏览器缓存的内容超过这个时间,则需要去服务端获取最新的内容。
说明:给出的日期/时间后,被响应认为是过时。如:Expires:Thu, 02 Apr 2009 05:14:08 GMT
需和Last-Modified结合使用。用于控制请求文件的有效时间,当请求数据在有效期内时客户端浏览器从缓存请求数据而不是服务器端.当缓存中数据失效或过期,才决定从服务器更新数据。
3、Etag
作用:用于发送到服务端进行内容变更验证的。
说明:HTTP协议规格说明定义ETag为“被请求变量的实体标记”。简单点即服务器响应时给请求URL标记,并在HTTP响应头中将其传送到客户端,类似服务器端返回的格式:
Etag:“5d8c72a5edda8d6a:3239″
客户端的查询更新格式是这样的:
If-None-Match:“5d8c72a5edda8d6a:3239″
如果ETag没改变,则返回状态304。
即:在客户端发出请求后,HttpReponse Header中包含Etag:“5d8c72a5edda8d6a:3239″
标识,等于告诉Client端,你拿到的这个的资源有表示ID:5d8c72a5edda8d6a:3239。
当下次需要发Request索要同一个URI的时候,浏览器同时发出一个If-None-Match报头(Http RequestHeader)此时包头中信息包含上次访问得到的Etag:“5d8c72a5edda8d6a:3239″标识。
If-None-Match:“5d8c72a5edda8d6a:3239“
这样,Client端等于Cache了两份,服务器端就会比对2者的etag。如果If-None-Match为False,不返回200,返回304(Not Modified) Response。
4、 Cache-Control
作用:指定了请求和响应遵循的缓存机制。好的缓存机制可以减少对网络带宽的占用,可以提高访问速度,提高用户的体验,还可以减轻服务器的负担。
说明:Cache-Control主要有以下几种类型:
public ---- 数据内容皆被储存起来,就连有密码保护的网页也储存,安全性很低
private ---- 数据内容只能被储存到私有的cache,仅对某个用户有效,不能共享
no-cache ---- 可以缓存,但是只有在跟WEB服务器验证了其有效后,才能返回给客户端
no-store ---- 请求和响应都禁止被缓存
max-age ---- 本响应包含的对象的过期时间
s-maxage ---- 与max-age的唯一区别是,s-maxage仅仅应用于共享缓存.而不应用于用户代理的本地缓存等针对单用户的缓存. 另外,s-maxage的优先级要高于max-age.
区别:
1、关于 Cache-Control: max-age=秒 和 Expires
Expires = 时间,HTTP 1.0 版本,缓存的载止时间,允许客户端在这个时间之前不去检查(发请求)
max-age = 秒,HTTP 1.1版本,资源在本地缓存多少秒。
如果max-age和Expires同时存在,则被Cache-Control的max-age覆盖。
Expires 的一个缺点就是,返回的到期时间是服务器端的时间,这样存在一个问题,如果客户端的时间与服务器的时间相差很大,那么误差就很大,所以在HTTP 1.1版开始,使用Cache-Control: max-age=秒替代。
Expires =max-age + “每次下载时的当前的request时间”
所以一旦重新下载的页面后,expires就重新计算一次,但last-modified不会变化。
2、Cache-Control: no-cache:这个很容易让人产生误解,使人误以为是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。
Cache-Control: no-store:这个才是响应不被缓存的意思。
Pragma: no-cache:跟Cache-Control: no-cache相同,Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是http 1.1提供的。
相关推荐
Live http header插件介绍 1 Live http header插件简介 2 Live http header插件的安装 3 Live http header功能介绍 目录 Live http header插件简介 Live http headers是一个用于抓包改包、分析HTTP流量的 Firefox ...
http header 详细介绍,详细的定义,类型等等等,希望对大家有帮助
### JSP获取HTTP Header信息(Request)详解 在Web开发中,了解如何获取HTTP请求头信息是非常重要的,因为这些信息能够帮助我们更好地理解客户端环境、优化响应策略以及进行安全性检查等。下面将详细介绍JSP中如何...
虽然要分,但您回复后,就不扣分了。 主要修改了 ContentLength 的类型错误。 可以方便 用 http 下载大文件。
HTTP头(HTTP Header)是HTTP协议中的一个重要组成部分,它包含了请求头、响应头、通用头等多种类型,用于传递额外的信息,如客户端的偏好、身份验证、缓存控制等。以下是对HTTP头的一些关键知识点的详细解释: 1. ...
go-httpheader go-httpheader是一个Go库,用于将结构编码到Header字段中。安装go get -u github.com/mozillazg/go-httpheader 用法 package mainimport ("fmt""net/http""github.com/mozillazg/go-httpheader")type ...
标题“风吟PHP HTTP Header 信息检测.rar”指的是一个使用PHP编写的工具,该工具能够检测HTTP头部信息,特别是与HTTP响应头相关的压缩状态,如gzip压缩,以及服务器的相关信息。这个工具对于开发者来说非常有用,...
http Header 详解.pdf
本文实例讲述了go语言在请求http时加入自定义http header的方法。分享给大家供大家参考。具体实现方法如下: 代码如下: client := &http.Client{] req, err := http.NewRequest(“POST”, “http://example.com”, ...
HTTP Headers 是 HTTP 协议的重要组成部分,用于在客户端(如浏览器)和服务器之间传递信息。HTTP 协议是万维网的基础,几乎所有网页内容的传输都依赖于它。HTTP Headers 负责携带有关请求、响应以及客户端和服务器...
httpheader 这是一个Go包,用于正确解析和生成标准HTTP标头。 它知道复杂的标头,例如 , 和 。 与许多其他实现不同,它处理语法的所有棘手位,例如带逗号,标题行和参数。 它为您提供了方便的结构,并且可以将它们...
HttpWatch是一款专业的HTTP性能分析工具,它主要用于帮助开发者和网络管理员深入理解网页加载和交互过程中的性能问题。这款工具能够捕获并分析HTTP头部信息,同时提供表单数据的查看功能,以提升网页应用的效率和...
语言:Deutsch,English,Français 显示HTTP标头字段。 您可以编辑并重新提交。 显示HTTP标头字段。 您可以编辑并重新提交。...请将错误或想法报告给https://github.com/Nitrama/HTTP-Header-Live谢谢:-)
HTTP协议Header详解是html帮助格式的,方便查询, 通过HTTP协议RFC2616整理的, 目录: 头域定义 2 1 Accept 2 2 Accept-Charset 4 3 Accept-Encoding 5 4 Accept-Language 6 5 Accept-Range 7 6 Age 7 7 Allow 8 8 ...
2020-02-19 10:34:46.901 INFO 5920 --- [nio-8080-exec-1] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be ...
add by zhj: Django将所有http header(包括你自定义的http header)都放在了HttpRequest.META这个Python标准字典中,当然HttpRequest.META 中还包含其它一些键值对,这些键值对是Django加进去的,如SERVER_PORT等。...
1、header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端。 header(string,replace,http_response_code) /*string:必需。规定要发送的报头字符串。 replace:可选。指示该报头是否替换之前的报头...
本主题聚焦于一个常见的问题——"网络请求封装工具类,缺少header",这意味着开发者在构建自己的网络请求库或者使用第三方库时,可能忽视了添加HTTP Header这一重要环节。HTTP Header在请求中起到关键作用,它可以...
HTTP签名标头(http-signature-header) 一个用于创建和验证HTTP签名标头JavaScript库 目录 背景 安装 要在本地安装(用于开发): git clone https://github.com/digitalbazaar/http-signature-header.git cd ...