http协议的缓存

1.Cache-Control

response.setHeader(‘Cache-Control‘,‘public,max-age=360‘)

//服务器在响应时,回传max-age参数,表示缓存时间:xx秒,那么客户端在下次请求时,根据上次回传的max-age值,

//首先判断缓存的相对时间,如果还未超过时间,则不发起请求,直接从Cache中读取。反之,则重新请求。

2.Expires

response.setHeader(‘Expires‘,‘Mon Jan 01 2018 08:00:00 GMT‘) //必须用格林威治时间格式

//服务器在响应时,回传格林威治时间,表示在次时间内的请求直接从Cache中读取

//那么客户端在下次请求时,根据上次回传的时间,比对客户端本地时间,

//如果本地时间未超过回传时间,则不发起请求,直接从Cache中读取。反之,则重新请求。

//缺陷:由于返回的时间比对的是客户端本地时间,如果本地时钟修改,则会导致缓存出现异常

3.Last-Modified

response.setHeader(‘Last-Modified‘,‘Fri,22 Jul 2016 08:00:00 GMT‘)

//服务器在响应时,同样回传格林威治时间,不同的是,它表示的是服务器最新一次对页面修改的时间

//那么客户端在下次请求时,会通过If-Modified-Since: Last-Modified-value带上之前回传回来的时间

//如果客户端传来的最后修改时间与服务器上的依然一致,则直接回送304 和响应报头即可。

//如果没有匹配上,说明服务器已对页面做了修改,则重新相应新的页面并回传新的Last-Modified

//缺陷:

a、只要资源修改,无论内容是否发生实质性的变化,都会将该资源返回客户端。例如周期性重写,这种情况下该资源包含的数据实际上一样的。

b、以时刻作为标识,无法识别一秒内进行多次修改的情况。

c、某些服务器不能精确的得到文件的最后修改时间。

4.ETag

response.setHeader(‘ETag‘,‘3fd729c07839068ebb6f7f4374981d9f‘) //一般可用MD5

//服务器在响应时,回传一个唯一标志符(比如md5),服务器在把页面响应给客户端的时候,会在实体首部加上“ETag: 唯一标识符”一起返回给客户端

//客服端会保留ETag字段,在下次请求时,通过在请求中添加if-none-match:ETag-value 给服务器,与服务器的ETag字段进行匹配,如果匹配上,则直接回送304 和响应报头即可。反之,则重新发送资源数据并回传新的ETag字段

原文地址:https://www.cnblogs.com/lishuge/p/12343113.html

时间: 2024-08-06 14:36:59

http协议的缓存的相关文章

http协议之缓存

http协议缓存控制 第一次请求时200 ok 第二次请求304 not modified 为修改状态 解释: 在网络上有一些缓存服务器,另外浏览器自身也有缓存功能. 当我们第一次访问某个图片的时候,正常下载图片返回200 ok 基于一个前提-图片不会经常改动,服务器在返回200的时候,还返回该图片的"签名" -- etag (签名可以理解为图片的"指纹") 当浏览器再次访问该图片时,去服务器校验"指纹" 如果图片没有变化,直接使用缓存中的图片,

HTTP协议 (四) 缓存

之前写过一个篇 [HTTP协议详解] ,这次继续介绍HTTP协议中的缓存机制.HTTP协议提供了非常强大的缓存机制, 了解这些缓存机制,对提高网站的性能非常有帮助. 本文介绍浏览器和Web服务器之间如何处理"浏览器缓存",以及控制缓存的http header. 本文会使用Fiddler来查看HTTP request和Response, 如果不熟悉这工具,可以先参考[Fiddler教程] .在看本文的时候, 请务必打开Fiddler来实践. 阅读目录 缓存的概念 缓存的好处 Fiddle

[转] HTTP协议(缓存机制Cache)

转自: http://www.cnblogs.com/Jessy/p/3568935.html HTTP的缓存 至于响应消息的实体,与请求消息的实体内容相似,这里只借绍下User-Agent头 User-Agent头域的内容包含发出请求的用户信息. Cache-Control头域(请求和应答通用头域) Cache-Control指定请求和响应遵循的缓存机制.在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存 处理过程.请求时的缓存指令包括no-cache.n

Mcrouter-基于Memcached协议的缓存层流量管理工具(Memcached集群的另一个选择)(转)

Mcrouter 是一个基于Memcached协议的路由器,它是 Facebook缓存架构的核心组件,在峰值的时候,它能够处理每秒50亿次的请求.近日,Facebook开放了Mcrouter的源代码,且遵从BSD协议,希望能够帮助更多的网站使用Mcrouter并扩大其系统规模.因为任何要接入Memcached服务的客户端都会使用标准ASCII编码的Memcached协议,所以对于客户端来说,Mcrouter就像一个Memcached服务器:而对于服务器端来说,Memcached却又像一个普通的M

转 HTTP协议 (四) 缓存

转自:http://www.cnblogs.com/TankXiao/archive/2012/11/28/2793365.html 缓存的概念 缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存. 数据库也有缓存, 等等. http中具有缓存功能的是浏览器缓存,以及缓存代理服务器. http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档. 缓存的好处

06 HTTP协议缓存控制

一:HTTP协议缓存控制 第1次请求时 200 ok 第2次请求时 304 Not Modified 未修改状态 解释: 在网络上,有一些缓存服务器,另, 浏览器自身也有缓存功能. 当我们第一次某图片时,正常下载图片,返回值200 基于一个前提--图片不会经常改动, 服务器在返回200的同时,还返回该图片的”签名”-- Etag  ,(签名可以理解图片的”指纹”). 当浏览再次访问该图片时,去服务器校验”指纹”, 如果图片没有变化,直接使用缓存中的图片,这样减轻了服务器负担. 二:抓包观察分析

HTTP协议 (七) Cookie

Cookie是HTTP协议中非常重要的东西, 之前拜读了Fish Li 写的[细说Cookie], 让我学到了很多东西.Fish的这篇文章写得太经典了. 所以我这篇文章就没有太多内容了. 最近我打算写一个系列的HTTP文章,我站在HTTP协议的角度, 说说我对Cookie的理解. 阅读目录 Cookie是什么,有什么用,为什么要用到Cookie Cookie的分类 Cookie存在哪里 使用和禁用Cookie Fiddler查看HTTP中的Cookie 网站自动登陆的原理 截获Cookie,冒充

HTTP协议 (六) 状态码详解

HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果是做AJAX,REST,网络爬虫,机器人等程序.还是需要了解其他状态码.  本文我花了一个多月的时间把所有的状态码都总结了下,内容太多,看的时候麻烦耐心点了. HTTP状态码的学习资料到处都有,但是都是理论上讲解.  本文介绍HTTP协议中的HTTP状态码(HTTP Status Code), 会对大部分的状态码都进行了详细的实例讲

运维-服务器缓存之varnish

varnish 一.介绍下吧: 首先了解几个概念, 1. Varnish不缓存带有Set-Cookie头的http输出. 2. 对于HTTP协议中缓存部分,Varnish遵从http协议部分.如:带有如下头信息,Control-Cache: no-store, no-cache, must-revalidate, post-check=0, pre-check=0,默认varnish不会缓存. 3. HTTP协议中缓存部分,Control-Cache优先于Expires,Pragma: no-c